一位大神的实习生面试之旅(拿下阿里巴巴、腾讯、百词斩offer)

一、腾讯微信事业群(内推,挂在总监面)

这是实习生面试的第一站,找腾讯的学长内推到微信,第一次面试,由于经验不足,知识点掌握不牢固不够深,所以挂在二面。但是,终究觉得在微信面试官身上学到的东西是最有价值的。

一面(2016.3.22,45分钟)

一面比较简单,问得不深,结束后面试官说这几天会有二面的电话。

1、自我介绍   
2、让我挑一个项目说,挑了IM的   
3、让我说说微信的IM原理   
4、聊天消息加密   
5、http和https区别   
6、怎么解决同步问题   
7、synchronized作用域   
8、Handler、Looper源码   
9、SQLite优化   
10、TCP和HTTP区别   
11、TCP流量控制如何实现   
12、长连接和短连接   
13、Listview优化   
14、如何防止内存泄露   
15、匿名内部类持有外界隐式引用   
16、Bitmap编码方式和压缩

二面(2016.3.23,100分钟)

没想到一面才过一天,马上就接到二面电话,没有提前准备,有些紧张。
  
1、挑两个项目说   
2、继续问微信相关的一些技术   
3、TCP连接数   
4、如何处理离线消息   
5、遇到过哪些消息发送失败的情况   
6、如何发送表情(emoji、本地表情和gif表情)   
7、如何确定Lrucache的合适大小   
9、Bitmap存储的内存区域(3.0前在native heap)   
10、UIL源码   
11、ListView优化   
12、ListView绘制   
13、Http有哪些Timeout类型   
14、怎么确定Timeout应该设置的值   
15、算法:O(1)实现快速栈(包括pop、push、查询、找最大最小值),不能用循环,只能用数组。   
  
意料之中是挂了,面试官的评价是:APP开发,莫过于UI、网络和内存三大块,你在这些方面都有涉猎,但理解不够深,我希望微信的候选人是在某一方面有比较深入和全面的研究和理解。

二、阿里巴巴无线事业部(内推,四面拿到offer)

找在阿里的学长内推。阿里的面试难度略低于腾讯,面试过程中没给太大压力。3轮技术,1轮HR,拿到offer,团队是做手机淘宝和Weex。

一面(2016.3.11,60分钟)

1、自我介绍   
2、字符流和字节流的区别   
3、List和Set的区别   
4、hash冲突解决   
5、Tcp和Http的区别   
6、问我的一个项目(IM系统)   
7、branch、fetch、tag分别是什么,Git协同开发流程   
8、如何适配不同屏幕分辨率   
9、除了px还有什么单位,有啥区别   
10、activity生命周期,fragment生命周期
11、开源框架的源码(UIL, Volley)   
12、Bitmap压缩和缓存   
13、加载图片在弱网环境下的优化   
14、做过哪些内存优化,如何防止内存泄露
15、ListView优化   
16、多线程下载和断点续传是怎么实现的
17、为自己的学习提建议

二面(2016.3.29,25分钟)

1、长连接和短连接   
2、TCP保活机制   
3、TCP连接复用   
4、如何判断链表有环,计算环长度   
5、快排   
6、并发安全   
7、ListView优化   
8、View绘制原理

三面(2016.4.5,45分钟)

1、activity启动模式   
2、屏幕旋转时如何保存activity数据   
3、activity生命周期   
4、AIDL   
5、Binder   
6、Handler和Looper   
7、内存优化做过哪些,有哪些常见的内存泄漏   
8、ArrayList和LinkedList的区别   
9、HashMap和HashTable区别   
10、TCP、UDP区别   
11、多线程下载怎么实现

三、腾讯MIG事业群(网申成都站,拿到offer)

腾讯面试难度和压力稍大,特别是二面,注重基础深度,爱手写算法,最后拿到offer。工作地点在广州南方通信大厦,做手机管家,不太喜欢,所以拒绝了offer。

一面(2016.4.18,25分钟)

本来安排的10:20面试,等到差不多12点,走进房间面试官向我表达歉意,说人比较多,时间比较赶,我说没关系,能理解。可能也是由于这个原因,面试时间比较短,才25分钟,当天晚上没收到二面通知,以为妥妥挂了,但是第二天晚上12点却收到二面通知。
  
1、自我介绍   
2、C++熟不熟,做过JNI吗   
3、做过哪些内存优化   
4、Bitmap压缩和缓存   
5、事件分发机制   
6、怎么处理耗时操作   
7、运行中的子线程怎么接受主线程的消息
8、View绘制原理   
9、堆排序   
10、快速排序   
11、Hashmap、HashTable、ConcurrentHashmap源码

二面(2016.4.20,110分钟)

二面的面试官很有耐心,面试时间有点长,一上来就是三道算法题。面试结束后,直接把我带到HR姐姐的房间。
  
1、算法:句子中的单词翻转(不能用工具类)   
2、算法:1万个手机号,找出出现频率最多的10个   
3、算法:AB两个文件,每个文件有50亿个手机号,要求在一个内存为4G的设备中,查找AB中都有的手机号   
4、HashMap、HashTable、ConcurrentHashMap源码   
5、挑一个项目来讲,画架构图,问了些细节
6、TCP连接复用,keep-alive原理,弱网优化
7、问我做的IM系统中,传图片传表情如何实现   
8、问我做的IM系统中,觉得我的协议的设计还需要注意哪些问题   
9、Bitmap编码、压缩、缓存   
10、图片加载库用过哪些   
11、内存泄露的原因,怎么检测内存泄露
12、会C++吗,做过JNI吗   
13、Handler和Looper   
14、怎么学习Android的,最近看了什么书
15、卓越班是什么   
16、广州工作可以吗,问我想做MIG的哪个产品   
17、跟上级意见不合,会如何解决

四、百词斩(成都现场面,拿到offer)

投的是百词斩的Android岗,但是由于公司不允许实习生参与APP研发,所以转成了Java后台,最后拿到offer。百词斩很多技术都是从BAT网易搜狐跳过来的,问得比较深,往往不是题目看到的这么简单,会被要求层层深入,知其然还要问其所以然,笔试面试加起来3个半小时。

一面

1、算法2道:最大公约数、解方程   
2、UDP、TCP区别   
3、如何保证线程安全   
4、TCP三次握手和四次握手   
5、TCP最后一次握手包丢失怎么办   
6、TCP如何防止SYN攻击   
7、描述网络层做了哪些事   
8、TCP最大连接数   
9、进程和线程的区别   
10、一个应用可以开多个进程吗   
11、多线程的进程,如何分配内存   
12、sleep和wait的区别   
13、主动调用Thread中的run方法会怎么样

二面

1、String equals原理,intern看过没   
2、抽象类和接口的区别   
3、泛型怎么实现的   
4、反射的缺点   
5、wait和sleep区别   
6、100个人,有人生日同一天的概率   
7、快排   
8、二分查找   
9、线程A、B,底层如何实现让B为等待A而阻塞   
10、红黑树、val   
11、HashMap和HashTable区别   
12、网络分层,协议头内容   
13、滑动窗口协议的窗口大小   
14、数据库索引   
15、算法:交换两个数,不用中间变量

    原文作者:Chris_y
    原文地址: https://www.jianshu.com/p/3fcf98153675
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞