2017年2月28日,伴随着对第二次面试的失落感,收到面试邀请,来到越秀区碰碰运气。
晚上1点多才睡,8点钟就起了个早,头晕脑胀。先做了一份笔试题,大部分都时中等水平的题目,相比上一次面试时做的笔试题稍难了点,做完之后就真的脑子感觉停转了,头晕得很。
第一个面试官,较年轻的工程师,跟他介绍我的大学生涯,看起来其对窝曾经做的一个Unity3D比赛很感兴趣,但对我作的Android App ILJMALL并无太大兴趣,问了一些问题,大部分跟Java基础有关,比如链表与数组的区别, 线程之间如何交互,wait与sleep的区别,HashMap的key重复如何处理(hashcode),最后要求写出一个单例模式跟一个十个数中找出两个相同点数的算法题以及复杂度分析,我说用递归可以,但算法复杂都较高,然后我居然说是nlgn,实则n²才对,可见脑子之晕。。
后面又来了一个工程师,年长很多,问了我wait与sleep的区别,volatile与synchronized的区别,静态synchronized与非静态synchronized的区别,基本都答了一点,但不怎么好,然后他问我有没有系统学过Java,我说Java编程思想已经看了两遍了,15年年底开始学的,后来他可能觉得我时间长了估计忘了,就也没追究。时值下班时间,也没聊多久,口头上说了声可以,就让我先回去等HR消息。
第二天,两个面试都通过了。内心思考再三,最后还是决定选择第三家面试的公司。第二周周一(3月6日)开始上班,实习求职暂时到此结束。
笔试题:
1、Activity与Service的生命周期
2、String、StringBuffer与StringBuilder的区别与使用场景
3、横竖屏切换时Activity的生命周期
4、Activity的四种启动模式
5、Handler的机制
6、画出Android的事件分发机制
7、Android的进程、线程区别与通信
8、Android如何保证线程安全
9、Android ANR、OOM导致的原因以及解决办法
10、算法题:长度为10的数组排序,写出代码,分析时间复杂度(答桶排序,时间复杂度为n)
网友评论