这几天跳槽,面了几家互联网公司,说说我的面试经历吧以及一些面试题吧。
乐视:
一面:先是笔试,比较基础,最后一道算法题-大数相乘没答出来,然后与技术leader聊了1个小时;
二面:人事面试,聊了半个小时;
三面:半个小时数字推理(感觉主要时间花费在理解题意上,没做完)
美团:
1、说说View的绘制流程;
2、两种序列化方式及对比优缺点;
3、Android的跨进程通信机制(Binder机制)
4、Activity的4种启动模式;
5、Activity的生命周期(比如从Activity A 进入 B,生命周期是:A:onResume() -> onPause() -> B:onCreate() -> onStart() -> onResume() -> A: onStop())
6、Fragment传值的几种方式:
setArguments();
构造函数传参(这个要注意,数值可能丢失)
借助其他类如单例类(我们项目中用Application)暂时缓存数据;
...
百度:
1、算法:1000个无序数中找出最大的10个数(我给出的思路是:分组各自找出最大的10个数,然后归并,重复这个步骤,直到只剩10个数)
2、有哪些性能优化方式;
3、图片加载优化,采样等;还有放大图片,怎么让图片显示部分不模糊失真;
4、自定义View;
5、聊了下做的项目;
6、自定义View中在onDraw()方法中可以设置padding吗?答案是不能,设置padding后,View的布局改变,会重新进行measure,layout流程,然后draw,从而陷入死循环,导致内存溢出或泄漏;
7、二面的面试官不在等通知 (||)
宜信:
一面:
1、算法:n个Linear slot,向其中放球,要求相邻两球之间的空格大于2,可以不放任何球,求有多少个solution?
实际就是斐波那契数列,可惜没答出来,然后用递归和循环实现。
2、Gc算法,以及引用计数法的问题。
3、jvm模型。
4、...
二面:android基础
1、View绘制流程,margin和padding的处理流程在哪一步?
2、四大启动模式;
3、Handler机制;
4、事件分发机制。
5、算法:一个字符串向右循环移位n位,求各个字符新的位置,并用算法实现。
....
三面:
1、还是算法,一个数字序列,先递增后递减,求出最大数字的下标(实际就是结合二分查找),并写出算法,递归和循环两种都写了。
2、为什么跳槽;
3、怎么学习android的;
4、最近看了哪些博客,说一说(从早上到下午三点,还没吃饭,大脑空白,实在想不出来啊,就瞎扯了,建议各位千万不要空腹去面试);
5、等人事通知。
京东:
一面:
1、开启线程的方式以及android开启异步线程的方式;
2、线程和进场的区别;
3、Java集合类;
4、Java异常类;
5、Java虚拟机模型;
6、Android IPC;
7、activity生命周期;
8、Handler原理;
...
二面:
1、线程和进场的区别;
2、算法,实际就是问HashMap的实现原理;...
三面:
1、算法,循环队列的实现;
2、京东部门介绍;...大概有两题没答好,表现中等偏上吧。