面试成功秘诀:坚持不懈与认清目标并重的职业发展策略
1. 北京研究所第一届Hackathon 二等奖
2. 转正绩效是A
3. 年终绩效 B+,获得明日之星
快手面试情况
1. Android一些优化方案
2. 什么是过渡绘制,如何防止过渡绘制
2. 事件分发机制
3. ListView的优化
4. Binder机制
5. 在多进程中,Application会启动几次
6. 单例模式,双锁原理,volatile原理,静态内部类实现单例的原理。
1. Java多线程,synchronized
2. 聊项目,都具体做了什么。
3. Binder机制
面试快手时,二面的面试官向我们介绍了他们所在的团队。由于快手发展迅速,不能只依赖一个应用程序,这个团队的任务就是去探索和尝试新的可能性。面试官当时正在开会,二面的面试官面带微笑,与我们进行了轻松的交流,并没有过多地询问专业知识,整个氛围非常融洽。
1. 问了关于数据库的一些问题,SQLite的相关操作,没办法,我在华为唯一一个做的和java相关的项目,但是不太擅长数据库。
2. 网络相关的问题,网络的五层模型,又问了TCP和UDP,还有Android相关的长连接,这里问的比较深。
3. 开始Android先关的知识,Handler机制,Acticity的生命周期以及四种启动模式,各自特点,Service的两种启动模式生命周期,如果同时使用两种启动模式是否可以,顺势讲到Binder,什么时候可以得到控件的大小,最后写了一道链表反转的算法题
快手面试官态度温和,并未过多询问技术细节,而是主要针对我负责的项目,讨论了绘图技巧等相关事宜,整个过程显得很轻松。我当时还真期待后续的面试也能这么简单,结果竟然一帆风顺地通过了。
1. 问了项目相关的问题,这部分根据自己的项目经验,由于大家的经验都不同,这里我就不详细说了。
2. 设定一个场景,怎么去实现相应的功能,因为快手这个部门想做社交,因此这里是问我是如何实现微信的联系人页面(包括与服务端有什么样的交互)
3. 最后也是一个算法,写出所有数组的子序列
网易面试印象
1. volley的源代码,在图片缓存部分讨论了挺长时间,http中缓存机制,Last-Modify的作用等。
2. fragment的生命周期
3. service一些知识
4. 事件分发机制
5. Binder实现机制,Stub类中asInterface函数作用,BnBinder和BpBinder区别。
6. gradle中buildToolsVersion和TargetSdkVersion的区别是什么
7. 手机适配一些方案
8. hashmap的实现原理
9. 静态方法是否能被重写
网易给我的整体印象很好,氛围很正。面试官经验丰富,甚至自曝偶尔会动手写代码,这在资深工程师中颇为罕见,这充分显示了网易对技术的重视程度。
1. 3次握手和4次挥手的原因,以及为什么需要这样做。
2. 数据结构,搜索二叉树的一些特性,平衡二叉树。
3. hashmap是如何解决hash冲突的
4. 进程与线程区别
5. 写了一个二分查找和单例模式
6. http中的同步和异步
7. 聊了一些项目上做的东西,问了问职业规划
面试官在网易的面试中思维转换迅速,我正说着,他忽然改变了话题,回答完毕后又继续。起初我对此节奏感到不习惯,但也能察觉到面试官思维灵活,考察的技能广泛。
TV 面试结果
1. 我认为Android做的优秀的几个地方,然后又根据我说的问了问比较深入问题。
2. Android是如何进行资源管理的。
3. java比较重要的几个特性
4. 网络五层结构,每一层协议,由于我网络不是很好,还问了一些其他的问题(例如MAC地址和ip地址的区别等)。

5. 为什么离开原来公司,以及职业规划,然后因为面试完大概就晚上8点了,就先让我回去,下周让hr跟我联系,我想这是应该通过面试了吧。
在 TV 这边,总体上是偏重于测试与开发,可我个人的志向是投身开发,对测试并无兴趣。虽然 TV 提到过几天会发放工作机会,但我感觉希望不大,心里难免有些失落,因为每一个机会都十分难得。
1. 单例,快排,回型打印二维数组
2. 写一个死锁,死锁是怎样产生的,怎样防止死锁
3. Acticity启动模式有几种,分别代表什么意思
4. 聊项目都做了些什么
这使我意识到,在面试过程中,岗位与个人职业规划的匹配度至关重要。若两者不匹配,即便获得工作机会,也可能不会接受。因此,在挑选岗位时必须慎重思考。
1. 字符串反转,讨论复杂度。
2. 聊经历和项目
面试轮次特点
多数企业通常设有三轮技术面试,不过也有特殊情形,比如网易就只进行两轮。首轮和次轮的问题区别不是很大,而且每位面试官都会把问题记下来,以便后续查阅,防止重复提问。
1. 给定一个int型 n,输出1~n的字符串例如 n = 4 输出“1 2 3 4”
2. 输出所有的笛卡尔积组合
3. 单例模式
4. 最长上升子序列
面试的安排挺合适,既全面又高效。每个阶段的面试官从不同角度进行评估,有助于更深入地掌握面试者的能力。
1. 对刚才做的题,一些错的地方做了讨论,主要是类的加载和内部类方面的知识,尤其一些深入到JVM层的知识的确自己有一些不足,不过大部分都还是能答出来。
2. 双亲委托机制,类的五个加载过程。
3. java类加载器的加载流程。
4. Binder机制,从java到framework再到kenral层,面试官问的都很详细,遇到不会的也都会跟我解释。
5. Serializable和Parcelable的区别。
6. View的绘制流程,详细到framework代码,讨论到不确定的地方,立马打开电脑和我一起看源码。
7. 事件分发机制。
8. 常用设计模式,使用静态内部类实现单例的原理是什么。
9. 线程同步,CopyOnWriteArrayList怎样实现。
10. Volley源码,EventBus源码。
技术面试深度
从最近几次面试的情况来看,技术层面的面试越深入,面试官对面试者的评价就越高。在第三轮面试中,面试官提出的技术问题并不那么具体,更倾向于以讨论的形式展开,通过对话来评估应聘者的思维和技能。
面试时,我们需熟练掌握基础内容。同时,对专业知识要有深刻理解和独到见解。在交流中,要充分展示个人观点和潜能。
1. 项目介绍,聊一些项目上的问题
2. 下拉listview的实现,需要注意的地方和优化的地方(不是lsitview的优化,是下拉的优化)。
3. Android上一些优化方案
4. 介绍了一下现在做的项目,大体说明了现在所用到的技术。
HR 面与面试本质
面试流程通常遵循固定的模式,由于是通过朋友引荐,面试结束后我与朋友还进行了交流。刚走出大楼,又被召回继续交谈,整体感觉沟通挺密集的。
1. 聊项目,GLSufaceView,OpengGL,Shader相关一些知识,在项目中做的优化
2. gc是根据什么来回收一个对象的,引用计数和gc root分别怎么实现。
3. 怎样会产生内存泄露,举一个具体的例子,使用什么检查内存泄露
4. 自定义View的绘制流程
5. 给出二叉树和一个值,找出所有和为这个值的路径;{1,3}{3,6}{3,4}{6,8}区间去重,最少去掉几个集合,可以让这个集合没有交集。
面试的核心在于自我展示,尤其是刚毕业的学生,需要向面试官展现其技术优势和发展潜力。我们必须展现出自信和实力,以便让面试官认识到我们的潜力以及未来的成长空间。
1. 什么是ANR,Activity、BroadcastReceiver、Service对ANR时间限制分别是多少,怎么处理ANR,除了系统生成trace.txt文件,怎么在程序中检测ANR。写出伪代码。
2. 编解码一些知识,I帧,B帧,P帧区别。
3. Android一些优化方案。
4. 算法 n/m,怎么判断得数是无限循环小数。