2017实习【Java研发】面经

标签: 实习 面经 Java研发 阿里、腾讯、华为python

找2017暑假实习,经历过被腾讯拒绝的无奈,也有拿到阿里和华为offer的喜悦,找实习过程也有一段时间了,在此把以前的面试知识点和经历作个小总结,以鞭策本身更加努力前进。ios

1 腾讯

腾讯投的是研发岗位,原来就知道对于Java系的人想去腾讯搞研发估计难度太大,但此次本身是切切实实体会到了。3月初,请教了在腾讯工做的师兄把简历改了又改,由N页浓缩为一页的精华,师兄帮忙内推以后过了很久都没消息,最后发现简历评级过低(B级),没过,实在是很忧伤。听说简历评级在A以上才有机会面试,自认为我的虽然不是大神级别的水平但能力仍是有的,简历不至于被残忍丢掉吧。其余同窗是Java系的也有简历顺利过的,后面一对比,人家除了搞Java外,还对PHP、python、C++等非Java系语言有项目开发经验,我就纯Java,有可能有这方面的因素。固然也有可能确实是简历没有写好。就在放弃腾讯之际,腾讯社交网络质量部却给我发了邮件表示接收了个人简历。经了解这是腾讯的一个测试部门,虽然不会去可是抱着学习长经验的心态,因而就有了接下来的测试和面试。面试

社交网络质量部专项笔试:

题目1:有用户反馈手机QQ的图片传输的速度比微信慢。分析缘由并提交实验数据和最终报告。

题目2:有用户反馈手机QQ的耗电比微信多。分析缘由并提交实验数据和最终报告。

笔试二选一,三天内完成。

    表示以前没有过相似的抓包分析经验,可是直觉告诉我能够去干。而后选择了题目一,手机系统是ios的,抓包工具用了fiddler和Wireshark。借同窗的手机平板,用iPad和iphone开了几个微信小号和QQ小号分别作抓包分析,也让同窗在移动网和室内wifi不一样环境作了相应的测试。最后获得的结果是微信mmtls和QQ https所使用的安全协议直接或间接致使的。提交报告后获得的回应是确实有这方面的缘由。笔试经过后等了2周接到面试。


腾讯面试都是现场面试。

一面:

1)问:自我介绍。

2)问:印象最深的项目。谈谈你的贡献和解决的技术难点。
这里面由项目展开,一连串的追问。好比他会问你项目哪里最难,怎么解决的,执行效率如何,有没有出现什么问题,怎么样处理,如何维护和升级等等。须要对我的作的项目比较熟悉,平时对项目多思考才能够答得好这些问题。我对本身作过的项目仍是比较熟悉的,因此回答的感受良好。这里聊了十多分钟。

3)问:你以前作过的社交网络质量部专项笔试【有用户反馈手机QQ的图片传输的速度比微信慢】,你当时是怎么思考和行动的?
这里就开始聊以前作的笔试,回答方向主要集中在怎么设定实验环境、怎么实现抓包及分析哪些关键内容、最后如何得出结论等等。最后面试官说这个题目实际上是有必定难度的,我提交的报告的结论确实是有那方面缘由(心里嘚瑟了一下,起码答案是经过了^^)。

4)问:现场写出使用递归逆序一个整数的代码。
面试官给了我纸和笔,询问了一些边界问题和具体要求后就开写了。这里须要注意的是面试现场写代码,首先本身不要慌张,要沉住气相信本身,其实题目不是很难的,冷静下来通常能够写出来。这也说明咱们平时有机会仍是要在纸上写写代码,不至于那么陌生。

5)问了一道智力题。
内心是千万只草泥马在奔腾的,面试的时候问智力题真是要坑人啊。这种问题要是不会就很难本身想出来的,不过能够换个角度思考问题,面试官人家不必定非要你回答出来,说不定更多的是考察你对问题的思考方式和过程,有什么疑惑的地方和面试官交流,你能够引导让他给你问题范围,甚至是给出答案的提示等等。总之智力题之类的,除非平时刷中题目,否则仍是好好思考不知道结果时怎么回答才能让面试官印象也不错吧。

6)问:你有什么问题想要问的吗?
问本身想知道的问题,要表现得真诚、积极、有上进心、有求知欲。最后在面试前针对性的准备一些合适的问题。

一面面了四十多分钟。多是测试岗位的缘由,并无问不少具体技术的问题。


二面:

     第三天收到二面的通知,很不幸在前一天吃错东西搞得上吐下泻,还发烧了。顶着疲惫的身躯去二面,感受是不太妙的,可是心想此次面试原本就是抱着学习长经验的态度来的,我的也不但愿最后选择测试岗位,内心就平衡了一些。

1)问:请做一下自我介绍。

2)问:说出对Java内存分配的机制。

3)问:JVM垃圾回收的主要算法。

4)问:收获最大的项目是哪一个,为何?
结合自身项目谈吧。

5)问:对TCP/IP的理解。是否有相关的项目经历?
这里主要想考察你对计算机网络的相关协议的熟悉程度。平时要针对复习。

6)问:你对将来的规划是什么样的?
从理想、学习、就业、家庭、生活等各个方面说本身的规划和行动。

7)问:你有什么想问个人吗?
这种问题须要提早作些功课,准备一下。

    因为身体缘由,我的二面面试的时候状态不是很好。面试过程面试官让人以为很舒服,这可能和腾讯的企业文化有关吧。临走以前面试官说会有人联系我进行最后一轮终面,可是最后却没有收到面试的通知,而是收到【岗位不合适】信息,可能面试官看出了个人心思最后改变了主意吧。有点小遗憾,不过原本也不打算去,经验已经赚到了。

2 阿里

阿里的面试都是电话面试,先后经历了4次面试,每次面试时间长度都在40至50分钟左右,从3月底到4月底也通过了一个月才出结果。算法

一面

1)问:请做一下自我介绍。
答:结合本身教育经历、项目、技能简要介绍,重点突出本身的特色和特长。

2)问:请说说什么是事务?
答:我回答时突出事物原子性操做,要么都作,要么撤销回滚都不作。
问:详细介绍事务的ACID特性。
答:分别介绍原子性、一致性、隔离性和持续性(持久性)四大特性内容。

3)问:对乐观锁和悲观锁的理解。
答:当时对这一部份内容不是很了解,可是大概说出了本身的理解。悲观锁是在并发环境中操做的时候,假设每一次操做都会有并发进行,每次执行都须要加锁解决潜在的多线程并发问题,在执行的时候比较“悲观”,认为操做都会遇到并发问题。相反乐观锁在执行的时候就比较“乐观”,认为操做时不会或不多遇到并发问题,因此只在最后提交操做的时候检查和处理并发问题。
问:介绍它们是如何实现的。
答:我回答的时候举了数据库乐观锁和悲观锁的例子。悲观锁经过加上表锁、行锁、读锁和写锁等实现,乐观锁经过版本控制(使用时间戳或递增的整数)等手段实现该机制。

4)介绍Java的集合,list、set和map的区别。
答:从它们的做用、用法、底层的数据结构、初始化容量和扩容规则、被继承的父类、是否多线程安全等角度去回答。

5)问:HashMap和HashTable的区别。
答:这里和回答集合类的思路是相似的。
问:HashMap底层是由什么数据结构实现的?
答:使用哈希表实现,用链地址法处理冲突碰撞......
问:那么HashMap如何实现具体的底层put操做和get操做,请详细介绍。
答:HashMap内部使用Entity对象存储键值对,先说put操做......
问:好,那HashMap是线程安全的吗?
答:非线程安全的。
问:那你如何实现HashMap的线程安全?
答:使用Collections集合包装类的静态方法synchronizedHashMap包装,实现hashMap的线程安全......
问:该方法实现的HashMap安全线程执行效率如何?
答:因为使用synchronize关键字实现同步,在多并发环境执行线程必须持有对象锁等才能执行同步代码,在大量并发时效率不高......
问:有没有执行效率更好的办法?
答:使用concurrentHashMap实现同步map,效率会更高。
问:好,说说看concurrentHashMap的实现机制,它为何会效率更高?
答:concurrentHashMap使用锁分段技术实现同步机制,在并发时使用的锁粒度会更小,能够处理更大量的并发数......
hashMap这块追问了很久,幸亏因此这部份内容还算比较了解,答得还算过得去。因此若是还有什么不会的,赶忙要熟知才行,最好是边看源码边体会其中的奥妙之处。

6)问:Java如何实现类加载?
答:根据类加载器的类别、做用以及类查找和加载等方面回答。

7)问:看你也作了很多项目,说说对你印象最深的一个。
答:结合自身项目回答,突出本身在其中的角色和起到的做用,本身的什么方法解决了什么问题,性能和效率怎么样,最后本身学到了什么,之后能够优化和升级的方向等。

8)二叉搜索树的查找时间复杂度?已排序数组查找一个元素的时间复杂度?

9)若是你和你同窗在讨论项目的时候意见没法统一,你该怎么作?

10)你有什么问题想要问的吗?


二面:

二面主要就是面作的项目,简历上的项目都问了,并且有些地方还问的很细。因此既然你敢写上简历,那么上面的每部份内容都有比较清楚才行。

1)问:请作一个简要的自我介绍吧。

2)问:请你依次说说你作的每个项目。
答:我在简历上写了三个项目,而后面试官一个一个项目慢慢问,并且问得很仔细。好比其中提到了一个定位算法,就问我是怎么设计的,根据什么如何有效建模,而且是怎么样验证算法有效性,如何处理边界特殊状况等等。一句话,简历上面出现的内容,本身是要真的要知道而且能说出因此然,若是是似懂非懂的内容,不是很建议写到简历,否则面试官一个简单追问就可能答不上来,就有点尴尬了。项目这一块大概面了二十多分钟,问得很详细,因此聊的时间久了一些。

3)问:在写shell脚本的时候,怎么样判断一个文件是否存在?

4)问:Linux系统下如何查看一个端口的占用状况?查看进程呢?

5)问:Linux系统下怎么样查看系统的运行情况?
这里我回答了top命令,而后就被追问loadaverage的几个数值的含义,还追问了这个命令其余操做。

6)问:如何修改主机名?如何查看本机的ip?
我在回答查看ip的时候说了ipconfig,面试官很友好的提醒让我再想一想。这才尴尬地发现本身说成了Windows下的DOS命令,赶忙改口说出了ifconfig。这里不得不感慨一下阿里的面试官真是nice,让人感受交流很舒服,丝毫没有高高在上的架子。

7)问:怎么样对数据库查询进行优化?
主要说了索引的优化,包括复合索引以及建立索引、使用索引关键字查询的顺序等该注意的问题。

8)问:说说你对concurrentHashMap的理解。
这个问题在一面的时候涉及到了,在那以后仔细看了这部分的源码和资料,因此这里回答得比较顺利。可见,concurrentHashMap是一个很是重要的知识点,须要特别关注。

9)问:JVM的内存结构?
这里须要对JVM有必定的了解,从JVM内存的Java栈、Java堆、本地方法栈、程序计数器、方法区的结构以及对应的做用等方面回答。

10)最后问了一道智力题,当时脑壳一时转不过来了,面试官很耐心的引导仍是没有答出来,不过面试官很友好的告知了答案。

最后结束的时候面试官说让我等待接下来的面试,听到这个仍是挺开心的,这意味着二面过了,准备三面吧。

三面:

三面等了一个多星期才来,某天晚上十点离开实验室的时候忽然来了电话,不得不说阿里的面试官也是蛮拼的,这么晚了还要面试。

1)问:我是阿里巴巴的面试官,请你先做一下自我介绍。
自我介绍多了感受回答的要点和套路都比较清楚了,这就是所谓的经验积累了。

2)问:说说对你印象或收获最多的项目。
结合本身的项目具体介绍,突出本身在项目中起到的做用和收获,最好说说本身在项目前、中、后是如何思考的。

3)问:你对将来是怎么样规划的?

4)问:你如今是在武汉,那么假设你是武汉市消防相关部门的负责人,没有任何数据的前提下你认为武汉须要部署多少个消防站?
这种题目应该是开放性的,我的以为最重要的一点就是要表现出你是如何思考的。

5)问:你是如何与身边的人相处的?有矛盾的时候怎么处理?

6)问:你有什么想要问的吗?

三面聊了30到40分钟这样,没有涉及不少技术的问题,说的主要是项目和其余非技术问题,聊完以后面试官就让我等下一轮面试了。


四面:

等了一个多星期,某个晚上八点多终于等到了阿里HR的面试电话。

1)请做一下自我介绍吧。

2)你研究生是保研的吗?

3)从本科开始到研究生你是怎么学习的?有没有什么变化?

4)你平时的平常生活是如何安排的?

5)我看到你有参加过学院的篮球比赛,除了篮球外有没有什么爱好?你如何调节学习和娱乐的时间分配?

6)我看到你有班干部的经历,请问组织活动的时候你是如何组织同窗保证活动有序进行的?

7)你对你本身的将来有没有什么规划?

8)你有什么想问的吗?

四面HR面的比较快,才三十多分钟就结束了。面试的时候感受面试官比较急,多是还要面试不少人吧。有些话我这边还没说完就被面试官抢过去了,明显感受面试官在赶时间想要快点结束这一轮面试,不过阿里的HR MM也是辛苦,晚上还要加班面试。

焦急等待了接近一周以后,就收到阿里的offer了,这是找实习收到的第一个offer,瞬间以为这前先后后2个月的准备也算是有了一份回报,立刻抱起篮球怀着激动的心情和同窗去了篮球场大战三百六十回合。shell

3 华为

三月份通过华为的笔试(三道编程题),顺利进入面试环节。不过据说华为的笔试不刷人,反正面试现场人上人海的,热闹非凡。华为面试一天就结束,效率比较高,我的相对比较偏好这种一面试结束就能够知道结果的方式。数据库

一面:

1)问:自我介绍。

2)问:interface和abstract class的区别。
从修饰类的关键字、类声明方式、类变量、方法体、继承、实现、功能及用法等方面阐述。

3)问:对关键字assert的理解。
断言机制。围绕测试时使用,项目发布时停用具体描述。

4)问:JVM的内存结构模型。
Java栈、Java堆、本地方法栈、方法区、程序计数器。

5)问:垃圾回收算法和执行机制。
主要有标记-清除、标记-整理、复制算法、分代回收算法等,和串行回收、并行回收等。

6)问:哪些对象在什么时候会被回收?如何精肯定位具体的对象?
再也不被引用的对象就会成为垃圾对象,即不在引用链上的对象将被回收,经过引用链能够肯定垃圾对象。

7)问:GC ROOT对象有哪些?和引用链的关系怎么理解?
围绕静态对象、常量对象、方法区对象等分析。

8)问:若是是在方法里面建立的本地对象,它会建立在内存结构的哪一个地方?如何访问该对象?
在Java栈的栈帧里面建立了对象的引用,在堆上建立了对象,栈帧里的引用指向堆中的对象。这里一开始的时候面试官描述的不是很清楚,交流的时候有了一些争论,随着讨论深刻,问题范围缩小后就能够准确回答了。这里聊了十多分钟,最后面试官很满意的说了几个字“彻底正确”,直接让我去下一轮面试了。

据现场了解,华为的一面刷人很多。在等待开始二面开始以前,被一个HR小姐姐带到机房去作测试去了。我觉得是现场考编程,后面一看是作性格测试题,瞬间感受有戏了。作完四十分钟的性格测试后准备二面,据说就是直接终面了。

二面:
面试官看起来就是部门位高权重的领导,看上去都有五十多了,年纪挺大的,一副领导的架子,感受有点小压抑。

1)问:自我介绍。

2)问:对作过的项目作个简单介绍。
这里有些地方想详细深刻讲解,面试官直接对我挥挥手,示意【不用】,此刻个人心里是翻腾的= =。

3)问教育经历。

4)问对将来的规划。为何选择深圳?

5)问学生工做和班干部的经历
结合经历具体介绍,突出本身在决策、组织和领导等各方面的能力。

6)问兴趣爱好
我平时比较喜欢打篮球,也参加了学院组织的比赛,最后面试官和我聊起了NBA。还讨论了今年季后赛的几组对战,当时仍是在季后赛首轮,面试官还让我预测东西部冠军,预测最后总决赛对战双方(汗颜)。

就这样二面结束了,注重的不是技术考察而是我的的综合素质。在我离开的时候,门口的工做人员让我回去等通知了,说是在十个工做日内会有通知。我知道,华为有戏!过了一个星期,收到了华为的offer。

最终决定实习去杭州。编程

相关文章
相关标签/搜索