美高梅平台下载-美高梅娱乐平台登录

热门关键词: 美高梅平台下载,美高梅娱乐平台登录

知乎著作权归作者所有,2017 Android暑期实习生面

日期:2019-09-30编辑作者:美高梅平台下载

一个多月没有更新博客了,一直在忙着找工作。现在已经尘埃落定,最终选择了网易。 这篇文章主要总结一下自己秋招的经历与准备。

图片 1

作者:牛客网链接:https://www.zhihu.com/question/29800631/answer/210814723来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。说一下应届生校招Java岗面试的情况,问到的问题应该不会逃得出下面的118篇面经,供大家学习参考:

一、经历

图片 2

作为一个双非渣硕非CS专业的应届生,接触并学习Android开发也就是最近一年多的时间,不过好在没走太多的弯路。

从去年暑假开始看视频学习Android,刚开始感觉自己很笨,出个小问题就懵逼了,往往鼓捣一天都毫无头绪,不过后来随着对理论的学习就变得好很多了。到16年11月份,开始看一些Java和Android方面的书籍,如《深入理解Java虚拟机》、《Android开发艺术探索》等。看了几本书后,感觉基础掌握的并不牢靠,实践能力薄弱,所以到了17年1月份后开始写技术博客和做练手项目。不得不说写作技术博客对技术的提升很快,其中的益处切身体会更能理解。而自己做一些练手项目,既增强自己的实践能力,同时提高了自身的竞争力。因为并不是科班出身,所以实践的机会很少。自己做的一些项目,虽然low一些,不过挖掘几个技术点,同时加入点项目趣味性,还是可以在面试中帮你增色不少。

以上大概就是自己从接触Android以来的学习过程,可能和多数人的历程一致,不过一步一个脚印,踏踏实实低走下来还是很有收获的。

今年3月份开始找暑期实习,历经两个月的时间,最终去今日头条实习。

关于暑期实习面试的经验,可以看这篇文章:2017 Android暑期实习生面试经验谈

在头条实习的这段时间,进步很大,了解到了很多东西。从产品的开发流程,到android的各个技术方面。了解了一款商业级产品开发的方方面面,这是自己平时做项目永远也无法接触到的,也是平台所带给的优势。不得不说,头条的技术氛围很不错。

由于各方面原因,更倾向于到杭州生活,所以在8月中下旬不得不离开了头条,开启了秋招之路。另外多说几句,现在一些一二线大厂越来越注重暑期实习生的招聘,转正留用的概率也很大。同时暑期实习招聘相对于秋招来说,难度与竞争也要小很多,所以学弟学妹们还是尽量早作准备,争取在暑期实习招聘就能拿到意向公司的offer。即便没有拿到意向offer,也要多去尝试,刷点面试经验,同时一份不错的实习经历也为你的秋招增加更多的筹码。

8月底开始海投简历,到这个时候才知道秋招的残酷。BAT从七月就开始内推,8月底内推都结束了...... 海投简历,狂做笔试,奔波面试,基本整个九月就是这样过来的。粗略估计应该投了三四十家公司,9月15号之前基本一天两场甚至三场笔试。20-30号之间就开始了疯狂面试,一天一场或两场。有时候一天两场现场面试,打时间差各种奔波,身体和精神都很疲惫。

幸好结果还不错,在十一之前结束了秋招。整个秋招的面试经历大致如下:

  • 滴滴、腾讯 笔试挂
  • 金山云 工作地点原因没参加二面
  • 京东、趋势科技 二面挂
  • 大疆、b站 要求上海现场面,没去参加终面
  • 网易、美团、360、中兴、CVTE、苏宁、有赞、51信用卡、贝贝、东方财富 offer

还有一些没去面试或者没做笔试。其中,阿里内推截止前投了一下,还投错部门了,草草地面了十几分钟就给回绝了,校招笔试也没过,很遗憾。由于想去杭州,所以基本杭州的一些大小公司都面了个遍.......

图片 3

1、今天斩获今日头条 实习offer 特来分享**
2、WAP onsite interview面经**
3、BAT面经,暑假前趁热来一发吧**
4、怒斩阿里、百度、微软、华为offer**
5、蚂蚁金服面试经历(内含大量干货)**
6、WAP在线面试经历**
7、轻松搞定58同城面试**
8、【百度、腾讯、阿里等】+【JAVA开发实习生】+春招面试经验**
9、万革始(Works Application)的面试经验**
10、爱奇艺校招面经**
11、新鲜出炉的迅雷面经**
12、如愿以偿获得Google(北京)技术岗工作**
13、阿里视频面试 研发工程师java**
14、软件研发春招总结(已拿百度、京东offer)**
15、今日头条图片搜索实习生面试经历**
16、笔试和面试不太难,大家加油(上海爱奇艺)**
17、春招总结**
18、携程面经(offer get)**
19、爱奇艺校招面经纯干货**
20、春招总结**
21、【阿里】阿里 Java 研发岗位面经**
22、记录一点春招**
23、网易游戏-直播平台-后台开发-已拿offer**
24、滴滴新锐(牛客网视频面)**
25、金山WPS服务端开发工程师面试经历**
26、渣渣的CVTE、阿里、去哪儿、腾讯面经**
27、阿里+华为实习已拿offer**
28、渣渣的春招总结**
29、【回馈分享】2017春招8家公司面试汇总**
30、阿里面经**
31、蚂蚁JAVA的面试**
32、CVTE 一面二面总结**
33、我的春招应该到此结束了**
34、蘑菇街一面 Java 开发工程师**
35、谷歌微软实习面经**
36、腾讯实习面经(offer)**
37、终于等到心心念念的offer**
38、网易实习生面经**
39、分享面经与总结(京东+搜狐+CVTE,offer已get)**
40、阿里巴巴2017实习面试分享(技术三面+HR面)**
41、阿里B2B面试经验(5轮技术面+HR面)**
42、学渣的春招路**
43、网易杭研java面经_413**
44、一个菜鸡的春招经历合集(美团点评、搜狐、cvte、招银网络)**
45、京东暑期实习面经**
46、头条第一批面经 后台开发**
47、京东java后台开发HR面试 **
48、京东美团Java研发暑期实习面经**
49、我的京东Java开发实习生面试经历**
50、网易杭州_实习_Java开发_2017.4.13**
51、去哪儿实习生面试总结分享**
52、记录一下我这次的春招面试经历**
53、华为面经(java)**
54、去哪儿网面经**
55、人人实习生一二面面经分享**
56、分享一波美团的面经攒人品(已拿offer)**
57、对一个多月的实习春招问到的问题做个汇总**
58、CVTE后台实习面经**
59、oppo java一面**
60、携程2017暑期实习一面二面经验**
61、2017年校招【京东面经】 哈尔滨站**
62、秋招面经分享,赠人玫瑰,手留余香~**
63、完美JAVA一面**
64、乐视java(1面+2面)**
65、西安,美团面经 java**
66、一直在牛客作伸手党这么久,发点这两天美团面试攒攒人品**
67、招银一面**
68、京东Java研发(1面+2面)**
69、招银电面**
70、招银网络科技一面,攒人品**
71、武汉京东一面面经**
72、招银网络一面...(好像是按照成绩进行面试的..)**
73、招银科技 一面**
74、招银网络一面**
75、兄弟我分享一面面经**
76、分享携程笔试两道编程,AC(java版)**
77、CVTE 西安 java面经**
78、热乎的面经之“远景能源”2017校园招聘**
79、JD(北京)复试**
80、谈谈我那的京东面试,伤心**
81、创新工厂涂鸦移动内推面经**
82、京东校招一面**
83、京东一面面经**
84、阿里JAVA开发校招笔试 很好很强大**
85、网易杭研,Java工程师,面经,已拿offer**
86、华为28号粤港澳招聘面经**
87、百度一二面面筋以及视频面是什么状况?**
89、CVTE内推校招第一个Offer好突然**
100、微店面经**
101、华为面试感觉有点坑啊**
102、网易java研发面经**
103、华为优招面经-干货**
104、【面经】一面+二面+HR面【网易内推】【java开发工程师**】
105、网易互联网Java内推面试经验**
106、校招季一路走来面经分享**
107、网易+阿里内推面经**
108、渣渣养成记(中兴+腾讯+CVTE+乐视+京东+七牛云)**
109、华为28号粤港澳招聘面经**
110、我的2017年校招历程**
111、校招总结:美团点评/滴滴/360/微店/小红书/有赞**
112、校招总结~**
113、挖财网面试**
114、2017年秋招Java后台的学习与面试经验**
115、技术渣渣的面经**
116、去哪网offer面试总结(java开发)**
117、欢聚时代 Java开发工程师**
118、2016秋招面经**

二、准备

图片 4

关于面经,网上有很多,也都大同小异,核心知识点都差不多。自己在秋招的过程中也总结了一下,暂时还没完成,不过也快了,接下来几天会系统整理下。正在找工作的小伙伴可以参考一下,下面附上地址:

GIthub地址:

Gitbook地址:

下面主要介绍下,针对秋招,自己所做的准备。主要涉及以下方面:

Java

  • Java基础
  • Java并发
  • Java虚拟机

Android

  • Android基础
  • Android进阶
  • 开源框架

数据结构

  • 线性表
  • 栈和队
  • 散列查找
  • 排序
  • 海量数据处理

算法

  • 剑指offer
  • LeetCode

设计模式

  • 创建型模式
  • 结构型模式
  • 行为型模式

计算机网络

  • TCP/IP
  • HTTP
  • HTTPS

操作系统

  • 概述
  • 进程与线程
  • 内存管理

数据库

  • SQL语句

关于以上内容,上面给出的两个链接中都有整理。不过也不要盲目为面试做准备,要想要打好基础,还是要多看看相关的书籍和博客。

关于书籍,在学习的过程中,主要看了这么几本:《疯狂Java讲义》、《深入理解Java虚拟机》、《Head First 设计模式》、《Android群英传》、《Android开发艺术探索》、《大话数据结构》等。

关于博客,在学习的过程中,主要关注了几位大佬:Hongyang、Gityuan、Piasy、占小狼等。

除此之外,还有一项重要内容,就是准备相关项目。对于项目的准备,还需要自行包装,突出亮点。对于新手而言,可参考这篇文章:Android新手如何学习开发一款app?

我写过很多篇秋招总结,这篇文章应该是最后一篇总结,当然也是最完整,最详细的一篇总结。秋招是我人生中一段宝贵的经历,不仅是我研究生生涯交出的一份答卷,也是未来职业生涯的开端。仅以此文,献给自己,以及各位在求职路上的,或者是已经经历过校招的朋友们。不忘初心,方得始终。

三、总结

图片 5

2017年大约半年的时间都在准备找工作与找工作的过程中,很特别的一段历程。

以过来人的身份提个建议:早作准备,锁定暑期实习,尽量避免秋招,说多了都是泪......

学习技术的脚步不能停,接下来把面试的相关东西整理一下,继续储备知识为工作而准备!

在下本是跨专业渣考研的985渣硕一枚,经历研究生两年的学习积累,有幸于2019秋季招聘中拿到几个公司的研发岗offer,包括百度,阿里,腾讯,今日头条,网易,华为等。


(在秋招末期,有幸又拿到了滴滴和亚马逊的offer,那时已经11月份了,所以之前的文章里都没有提到过)

一路走来也遇到很多困难,也踩了很多坑,同时我自己也探索了很多的学习方法,总结了很多心得体会,并且,我对校园招聘也做了一些研究和相应的准备。在今年的秋季招聘结束以后,我也决定把这些东西全部都写成文字,做成专题,以便分享给更多未来将要参加校招的同学。

大学时期的迷茫与坚定

我的本科专业是电子信息工程,基本没有接触过计算机专业的课程,只学过c语言,然后在大三的时候接触过java,Android,以及前端开发。这时候我只是一个刚刚入门的菜鸟,还不知道软件开发的水有多深,抱着试一试的态度去应聘了很多公司。结果可想而知,连简历筛选都没有通过。

当年我对游戏开发很有兴趣,特别是对网易游戏情有独钟,但是当我看到网易游戏研发工程师的招聘要求时,我只能望而却步,因为它要求学历至少是985的硕士。

也因为这个契机,我在大三的暑假开始准备考研,花了一个月的时间深思熟虑之后,选择了华科作为我的目标院校。

于是,2016年的下半年,我成为了“两耳不闻窗外事,一心只读圣贤书”的考研党,回想起来那确实是玩命学习的半年时间,每天稳定泡在图书馆8个小时以上,有时候学到宿舍都能学到晚上12点,那时候感觉自己完全变了一个人似的,可能当一个人为了某个目标而努力时,真的会变得不一样。最终我顺利地考上了,令我意外的是,成绩还挺不错。

对于即将读研的同学来说,一般有两件事很重要,一件事是选择导师,一件事是选择方向。

我在刚读研的时候最头疼的也是这两件事情。首先说明一下,我读的是专硕,所以实验室一般不搞科研,有部分导师会带项目,由于我不打算在实验室做项目(因为我更希望去大公司里锻炼几年),所以我当时本着想要找实习的想法选择了导师,事实证明我的选择还是很正确的,我在研二有大段时间去参加实习,让我在大厂里有足够的时间去锻炼和学习。

而选择方向这件事,我倒是折腾了好久。研一期间我做的最多的事情就是看书了,当时自己的方向还不明确,所以找了很多书来看。当别人都在专研数据挖掘和机器学习时,我还在各种方向之间摇摆不定。

我在读研之前想做游戏开发和Android开发,但我以前也学过Java Web开发。于是我在网上了解对应方向的资讯,发现游戏研发的就业面比较窄。

最后,我综合公司的岗位情况,个人兴趣,以及我之前的学习经历等因素,选定了Java开发方向。

于是,我在学校的实训项目中选择了Java Web项目,从此也真正意义上地踏上了Java的学习之路。

尽管我的入学成绩是全学院的top3,但是,我发现,作为非科班出身的我,和很多科班同学相比,还是有一定差距的。

大部分同学本科都上过计算机专业的相关课程,比如计算机网络,操作系统,数据结构等等,而我以前连听都没听过,除此之外,他们一般都会几段比较完整的项目经验,至少在Java Web方面已经算是比较熟悉了。而我在当时,只学了数据结构,另外接触过一些Java基础,有一部分项目经验,基本上就是入门水平。

于是我痛定思痛,决定好好弥补我的不足,平时一有空就去图书馆找些书来看,不论是操作系统,计算机网络,还是数据库等本科课程,我都会找一些对应的书籍来看,当时不太清楚其实有些课程其实不需要特地去补,以至于我连计算机组成原理,编译原理,软件测试等方面的书都特地找来看,现在想想也是挺逗比的。

由于我们上的课比较水,所以上课时间反而变成了我自学基础课程的大好时光了。所以我平时上课的时候都会带两三本书,一到两周内看完一本,虽然可能吸收的不是特别好,但是对当时的我来说还是有很大帮助的。

除此之外,有时候我还会偷偷去旁听有一些本科生的课程,这也是因为我在自学一些课程的时候遇到了困难,比如《操作系统》,《数据库原理》等等。于是我花时间研究了一下本科生的课表,趁着自己没课的时候赶紧去旁听课程。有时候感觉自己在课堂中显得非常突兀,尴尬地想要逃跑,但总算是坚持地听完了一门数据库的课程。

此外,我还在各种视频网站上看网课,比亦或是看中国MOOC的计算机基础课程,里面的操作系统,数据库等课程也让我印象深刻。

就这样,每天我都把自己的时间填满,愣是在研一上学期看了好几本书,当时书的版本现在有的记不清了,主要是计算机网络,操作系统,计算机组成原理,另外还有软件工程,软件测试,设计模式,等书籍。就这样,我靠着这段时间的坚持把计算机基础课程补上来了一些。

时间来到研一下半页,这时候我刚刚结束了学校的Java Web的项目实训课程,在做这个项目期间,我发现自己暴露出了很多问题,技术实践能力不足,Java基础不扎实。这件事情也给我自己敲响了警钟,因为我计划在春招期间找一份大厂的实习,但是目前看来我的水平还远远不够。

压力之下,只有努力一条出路。于是,从那时候起,我开始了“留守“实验室的学习生活。为什么要在实验室学习,一是因为学习气氛好,二是因为平时大家也可以互相交流问题。

每天早上9点到实验室打开电脑,晚上9点背电脑回寝室。大部分时间我会花在看书上,这段时间主要看的都是Java相关的书籍,借鉴的是江南白衣大佬的“Java后端书架”,比如《深入理解JVM虚拟机》,《Java并发编程艺术》,《深入分析Java Web技术内幕》,《深入剖析Spring源码》等等。

另外一部分时间我会用来看一些技术博客,我主要是根据面经上的知识点按图索骥,找到对应讲解该知识点的文章,那时候主要还是通过搜索引擎来找文章,当然有时候看到一些重点难点也会自己写一些博客。不过这个时期并不是我大量写博客的阶段,主要还是看一些讲解面试知识点的技术博客为主。

除此之外在面试前几天我会花时间去看这家公司的面经,搞懂每一个面经上的知识点,并且记录在我的笔记上,光是面经相关的笔记我就记了100多篇,这样的学习习惯我一直坚持到了秋招,确保每个面试知识点都能被我记住,消化,直至完全理解。

慢慢的,笔记越来越多,我参加面试的公司也越来越多,于是我开始不断完善自己的简历,总结自己的面试技巧,选择合适的网申时机。从头到尾我大概花了3个月的时间在找实习上,期间大大小小参加了20多次面试,我也从一开始面试一问三不知的菜鸟,逐渐变成了面霸,到复习末期,我对Java常见面试知识点已经了然于胸,同时也越来越自信,不管面什么大厂都不慌不忙。

这样的日子持续了好几个月,所谓世上无难事,只怕有心人。到最后,实验室里每个人都拿到了心仪的实习offer。

踏出学校大门,我的实习之路才刚刚开始。8个月左右的实习时间,说长也长,说短也短。但经历过这段实习之后,我才明白了很多事情。

在猪场实习的日子里,我第一次了解大公司的开发流程,亲自参与项目代码的开发,我的导师会和我提需求,会指导我怎么做得更好。在这里的成长无疑是非常快速的,但我很快意识到我的问题所在,不熟悉部门技术栈,对很多Java Web的技术原理都不太熟悉,这段时间我意识到了自己的知识深度和广度都可能都有待提高。

不过由于家里的一些事情。我提前离职了,所以在猪场呆的时间很短,以致于我没来得及搞懂部门项目的技术架构就走了,这也让我在离开以后感觉很遗憾,所以我下定决心在下个实习单位要好好做。

离开猪场后我来到了熊厂。部门给我提的需求不算太难,大部分都是一些CURD的工作,但是这次很快就意识到了问题所在,就是我不太熟悉部门的整体技术栈,所以在需要借鉴别人代码时偶尔会看不懂。后来部门又给了新的重构需求,此时的我开始焦虑起来,是不是应该做出一些改变呢。

终于,我找到了新的目标,我要搞懂部门的项目架构,了解相关技术栈(我们部门做的是私有云),一开始,我会请教我的导师,尽量去了解项目的架构设计,除此之外,我还会利用一些时间去看其他同事负责的代码,并且通过一些文档和PPT去了解这些代码的功能和意义。结合代码和文档,再加上和同时的交流,我对部门项目的架构逐渐熟悉起来,为了更好地理解每一块代码的作用,我还为一些模块的代码写了注释。

当然,光看代码和文档还不能解决所有问题,因为这个项目的重点难点不在Web应用,而是在底层技术,这个项目中包含了两套架构,分别是一套OpenStack集群和一套docker集群。为了学习这两块内容,我先是看了很多博客,然后在平台上跑虚拟机和容器来做实践,最后又看了这方面的一些书籍,主要是《OpenStack设计与实现》,《docker技术入门实战》。

但是这还不够,虚拟化技术与Linux内核息息相关,又需要学习者对操作系统和计算网络非常熟悉,我自知这些内容我学得还不够深入,于是我花大量时间看这方面的书,当时也遇到了几本确实不错的书,分别是《深入理解计算机系统》,《计算机网络:自顶向下方法》,还有一本没来得及看完的《Linux内核设计与实现》。虽然以后不一定会作云计算方向的开发,但是学完这些东西我还是非常开心的。

到后来,我工位上的书越来越多,我对部门的技术栈也越来越熟悉,有时候我还会去听公司内各个团队组织的技术分享,有空的时候看看内网的技术课程,真正地实现了自己在技术广度上的拓展。

有时候我觉得,实习生活是会骗人的,你佩戴着和正式员工一样的工牌,和他们做着类似的事情,会让你觉得你的水平已经和他们差不多了,但事实上是,在转正之前,你和他们还差得远,所以不要停下自己前进的脚步,抓紧时间学习吧,把握好你在公司里的机会,合理利用公司给你提供的资源。

研究生期间我有一件事情一直在坚持,那就是做笔记和写博客。

做笔记,就是记录学习中大大小小的事情,可能是面试问题,可能是一周的学习计划,也可能知识一个知识点,总归都是值得记录的东西,对我来说,就是一种积累。而对于博客,我从一开始只用于记录项目,到后来做转载,再到后来写原创,整理系列文章,则更像是一种沉淀。

但是在春招刚刚结束的这段时间,我发现一个问题,之前学过的东西忘记了很多,特别是那些理解的不够深的知识点,总是特别容易忘记。另外我发现,虽然我在笔记中记录了很多的知识点和面试题,但是往往我只看过一次,不会再去看第二次。

这也意味着,虽然记录的内容很多,但是真正消化吸收的内容很少,脑子里充斥着总是那些零碎的知识点和面试问题,对于完整的知识体系知之甚少。这些问题在春招期间也不断地暴露出来,让我思考了很久。

面对如此窘境,我想做出改变,趁着现在时间充裕,我想要为这些内容做一次减法,并且借此机会,推翻自己原有的知识体系,重建新的知识框架。简单说来,就是重新开始学习Java后端,这次我要用一种更高效的方式,避免走之前走的弯路,要用最高效,最合理的方式去复习。由于我之前已经有基础,所以我对完成这一目标有信心,相应地我也为此做出了明确且详细的学习计划。

我打算用几个关键词来形容这三个月的秋招复习。

“具体可靠的学习计划”

在三个月的时间里,我首先按照Java后端路线图安排好复习计划,每个知识点都会对应安排一段时间,比如我可能花一天时间复习“Java反射”,两天时间复习“设计模式”,一周的时间用于复习"JVM虚拟机”。我一般会在月初做好整个月的计划,然后根据进度做一些微调,但是基本上我都可以跟上进度,并且是在复习到位的前提下。

所以我觉得,对于秋招这一场苦战,指定计划尤为重要,一旦计划定下来,战略目标清晰,对应的战术制定也会变得清晰,执行力也会随之变强。

“写博客整合知识点”

至于复习方法,我主要通过看高质量博客,并且结合代码实践的方式巩固这部分知识点,比如今天学习“concurrenthashmap”,我会去找两三篇比较好的博客先看看,主要是源码解读方面的,然后我会把它们进行整合,如果有遗漏的知识点我会再进行补充,有时候我还会自己去看看JDK源码,以便更好地理解博客内容,完成知识整合之后,我就会对应地整理出一篇博客出来,发在我的个人博客上。

除此之外,当我完成了一整个专题的复习之后,我会把这些文章整理成一个专题,比如上面说的“concurrenthashmap”,实际上属于Java并发包,所以我会专门做一个博客专栏,用来完成Java并发系列的文章专题。对于每一个文章专题,我都会先理清这个专题一共有哪些内容,然后再开始整理。比如对于Java并发包,我会先写Java多线程基础的文章,再写JMM内存模型的文章,接着一步步着手写Java线程池,阻塞队列,工具类,原子类等等。这样一来这部分内容就复习完毕了,写系列文章的好处就在于,我可以从头到尾理清脉络,并且对于每一部分的知识点都做了比较好的总结。

对于博客的选择,我吸取了之前的教训,宁愿花半小时看一篇高质量文章,也不花10分钟看5篇烂文章。深度阅读的好处,就是可以让这部分内容更好地融入你脑内的知识体系,而不是像其他快餐文章一样转瞬即逝。

“做项目巩固实践能力”

由于之前在实习期间参加的项目都比较大,我接触的模块也比较单一,没有对整体项目有一个很好的把握,所以我决定趁这段时间再巩固一下我的项目实践能力,这里的能力主要是指的是对项目架构的把握能力,以及对业务开发的熟练度,当然也包括对各种常用后端技术的熟悉程度。

我花了大概一个月的时间完成了两个项目的开发,当然主要也是模仿两个开源项目做了,这两个项目都使用SpringBoot快速开发,并且用到一些常用的后端技术比如redis,云存储,以及一些常见Web框架,除此之外还涉及到了solr,爬虫等技术。虽然项目不算很难,但是我在这段时间里很快地熟悉了完整项目开发的流程,并且每天做迭代,通过Git来跟进版本,每个版本都会写清所做的内容,这也让我对项目的架构非常熟悉。

在项目之余,我也找一些常用的后端组件来跑一跑demo,以便让我对这些技术有一个直观的了解,比如面试常问的dubbo,zookeeper,消息队列等组件。这些尝试也让我在理解它们的原理时更加得心应手了。

“坚持刷题,注重方法”

算法题是秋招笔试面试中的重头戏,每个研发同学都免不了经历算法题的摧残,对我这么一个非科班同学来说,更是让人头大。正因为如此,我放弃了刷大量LeetCode题目的方法,选择了更加行之有效的刷题方式。

首先我重新刷了一遍剑指offer,并且对每道题目进行总结,尽量保证每一道题都可以记在脑子里,众所周知剑指offer中的题是面试时非常喜欢考的,所以先搞定这部分题目是最为关键的。

搞定剑指offer之后,当然还要刷LeetCode了,LeetCode题目这么多,怎么选择呢,我没有按照tag刷,也没有按照顺序刷,而是参考当时一个大佬的LeetCode刷题指南来进行刷题的,他把每个类型的题目都做了归纳,每部分只放一些比较经典的题目。所以我前后大概刷了100多道LeetCode的题目,并且在第二遍刷题复习的时候,我也对这些题目做了一份总结。

除了上面两个经典题库,我还着重刷了大厂的历年真题,这部分我主要是通过牛客网的历年真题题库来完成刷题的。说实话,真题是非常重要的,因为公司出的题目不像平时的那些算法题,可能会出得非常奇葩,所以你如果不提前适应的话会比较吃亏。完成这部分题目之后,我对算法题的复习也基本告一段落了。

当我完成所有内容的复习时,提前批已经开始了。终于要上战场了,因为战前准备比较充分,所以我对秋招还是比较乐观的,但事实上,秋招不仅是攻坚战,而且是持久战,要笑到最后,确实也不是那么容易的事情。

前面提到我在秋招前完成了知识体系重建,那在这里我也想跟大家分享一下我当时大致的知识体系构成。就跟我前面说的一样,我选择重新再学一遍Java后端相关的技术内容,因为我知道大致的学习方向,并且有一定的基础,所以看很多文章变得更加得心应手,写文章和做总结也更加有底气了。

首先在Java基础方面,我写了20多篇原创博客,主要是对Java核心技术的解析,比如“Java反射”,“Java序列化和反序列化”,“Java异常体系”等等。

在Java集合类方面,我原创了部分文章,另外整合了一些比较好的技术文章,其中最主要的就是关于hashmap的文章,当时我整合的文章几乎没有遗漏任何一个知识点。

在Java并发编程方面,我主要参考了并发编程网以及一些优质博客的文章,先搞懂了Java并发原理,再一步步学习JUC并发包的组件,其中重点看了chm,并发工具类以及阻塞队列等JDK源码的解析文章,除此之外,我还会在IDE中跑JUC相关的emo,毕竟这方面的内容非常需要实践。

在Java网络编程方面,我先从最基础的socket入手,再讲到NIO,AIO,并且加入了几篇对Linux IO模型解析的文章,让整个知识体系更加完整(因为NIO是基于Linux Epoll实现的),接着我又加入了对Netty的探讨,以及Tomcat中对NIO的应用,可以说是把Java网络编程一些比较重要的部分都囊括进来了。为了更好理解这部分内容,我也在网上参考了很多客户端和服务端通信的demo,最后我分别用Socket,NIO,AIO以及Netty把C/S 通信的demo都写了一遍。

在JVM虚拟机方面,我则按照《深入理解JVM虚拟机》这本书的行文脉络进行文章的整理。在搞定JVM基本原理以后,我着重了解了JVM调优和实践中常遇到的问题,并且整理了常用的JVM调优工具,场景问题以及调优实践的案例,这也是因为面试中对JVM调优实践越来越重视了。

在JavaWeb方面,我从Java Web相关技术的发展入手,一步步了解了每种技术存在的意义,比如JSP,Servlet,JDBC,Spring等等,然后对每种技术进行了比较全面的了解,并且着重地看了Spring和SpringMVC的源码分析文章,另外一方面,我花了很多时间去研究Tomcat的工作原理。除此之外,JavaWeb项目中常用的maven,日志组件,甚至是单测试组件,也纳入了我的系列文章里。

在数据库和缓存方面,我主要学习了MySQL和Redis这两种最常用的数据库。对于Mysql,我从简单的sql开始了解,然后开始了解sql优化,MySQL的存储引擎和索引,事务及锁,还有更复杂的主从复制,分库分表等内容。对于Redis,我也是从简单的api入手,然后去了解每一种数据结构的底层实现原理,接着尝试去学习Redis的持久化方式,以及作为缓存常需要考虑的技术点,当然,也包括Redis的分布式锁实现,以及它的分布式集群方案。

最后一部分就是分布式相关的理论和技术了,这个也是困扰我很久的一块内容,我主要把这块内容分为两个部分,分别是分布式理论和分布式技术,理论方面,我先了解CAP,BASE等基本知识,然后开始学习一致性协议和算法,接着探讨分布式事务。对于分布式技术,涉及的东西就更多了,例如分布式session,负载均衡,分布式锁等内容,这些知识点我都会用一到两篇文章去总结,对于分布式缓存,消息队列,以及分布式服务等内容,我会花比较多的时间去全面学习,然后总结出一个系列的文章出来。当然,对于这些技术的学习主要还是停留在理论方面,在自己的项目中能用到的比较少。

至此,我的知识体系基本构建完成,这也是我在秋招中能够成功闯过那么多面试的原因。

不管前期做了多少准备,到秋招的时候也不能掉以轻心,从七月底第一次面试到9月基本佛系,中间经历了大大小小的面试。

在完成知识体系重建以后,我把重点转向了另外几件事,一是完善和熟悉我的简历,以便在面试中能够比较好地发挥,二是持续刷题,保持对算法题和笔试真题的手感和熟练度,三则是看面经查缺补漏,我一直认为看面经是很重要的一项复习内容。

就这样,我一边继续复习,以便开始了一场接一场的面试接力。

起初,我面了几家小公司练手,接着阿里的提前批接踵而至,我战战兢兢地参加了阿里中间件部门的面试,面难难度还算适中,一共四轮面试,当时我的表现也还不错,问题基本都答上来了。面完不到一周以后我就收到了通过的消息,当时还有点懵。没想到第一个offer这么快就来了。

这段时间内,蚂蚁金服的两个部门也给了我面试机会,我都参加了它们的面试,并且顺利地拿到了其中一个部门的offer。由于我对蚂蚁这边的业务比较感兴趣,最终选择了蚂蚁金服的offer。

阿里提前批的胜利确实是意外之喜,但也大大地鼓舞了我,于是我又参加了百度和腾讯的提前批面试,由于百度的提前批不走流程,一共有四个部门面试了我,每个部门都有2到3轮面试,总计约为12次面试,到后来我已经快晕了,看到百度的电话就害怕,由于面试次数太多,有时候发挥确实也不是很好,我也没有特别在意,只当是在锻炼自己了。

百度的面试难度每个部门不一样,但是每次面试必写算法题,一写算法题,时间至少就是一个小时以上,每次面试完都有一种身体被掏空的感觉。

本文由美高梅平台下载发布于美高梅平台下载,转载请注明出处:知乎著作权归作者所有,2017 Android暑期实习生面

关键词:

注解处理器,接下我们将学习使用APT

主目录见:Android高级进阶知识我们在开发的时候为了提高效率往往会选择一个基于注解的框架,但是有时使用反射通...

详细>>

任何一个包含n个节点完全二叉树(满足从根节点开

一直以来,我都很少使用也避免使用到树和图,总觉得它们神秘而又复杂,但是树在一些运算和查找中也不可避免的要...

详细>>

实现方法,真正调用的构造

参考:Android中定时器的3种实现方法 在Android开发中,定时器一般有以下3种实现方法: 总结 Handler类的主要作用是发送...

详细>>

Android 架构师之路 目录,GUI 系统来说

在日常开发过程中时常需要用到设计模式,但是设计模式有23种,如何将这些设计模式了然于胸并且能在实际开发过程...

详细>>