最近有时间,把前段时间的面试总结一下。听朋友说最近市场行情不是很好,所以把相关源码好好研究准备了一下才开始面试。我觉得市场确实不如以前,应该说现在达到了一个相对稳定的状态,但对于高技术人才的需求还是挺大的,所以努力提高技术才是正解。希望正在找工作或是打算换工作的小伙伴们都可以如愿以偿找到自己心仪的工作。
新浪
1.ViewStub的实现,和setVisibility有啥区别?ViewStub和setVisibility实现过程中执行onMeasure,onLayout,onDraw三个方法中的哪个方法?
2.View和Activity怎么交互的?View,Activity和WIndow三者之间的关系?还有WindowManagerService之类的?
3.事件分发流程?requestDisallowInterceptToucheEvent方法是怎么实现的?
4.一个viewGroup,两个View重叠,A在B的上面,怎么把事件传递给B?
一个VIewGroup嵌套一个listview怎么实现ViewGroup滑动一段listview也滑动一段?当重写listview滑动到顶端的时候怎么让外面的ViewGroup滑动?
5.hander消息机制?Looper.prepare()中Looper对象是怎么创建的?Thread怎么对应到了Looper?ThreadLocal是什么?主线程为什么不需要调用这个方法?
6.ActivityThread是怎么启动的?AMS怎么找到ActivityThread?binder线程存储在哪里?两个进程之间为什么需要binder机制?binder为什么安全?
looper.loop()循环不停止会崩溃,怎么停止循环,怎么从messageQueue众获取message,Message为Null调用break了那再有message了怎么样启动looper.loop()?
7.MessageQueue的的数据结构,为什么用链表不用数组
ArrayList的数据结构,LinkedHashMap数据结构,HashMap数据结构?
8.listview中recycleBin的机制?
大概以上这些,新浪的面试给我一环扣一环的感觉,挺感谢新浪面试官的,我觉得面试也是一个查漏补缺的过程,感觉面试官帮助我把android底层实现梳理通并连接起来了。从ViewStub到三大绘制流程,到Activity,View,Windows三者直接关系,到事件分发机制。又从hander消息机制到Looper到ThreadLocal到ActivityThread到binder机制。
印象深刻的一个面试,也是对自己帮助很大的一个面试,哈哈。
爱奇艺
爱奇艺的面试相对内容太多,好多已经记不太清了,大概总结一下。
1.Activity,View,Window三者直接的关系?
2.View的绘制流程?onMeasure的实现?
3.Activity是怎样启动的?Binder机制?
4.http和https?AES,DES之类的?
5.EventBus实现原理?
6.Hander机制?
7.js相关?
8.性能优化和重构?LeakCanary原理?
9.事件分发机制?下拉刷新的实现?
10.HashMap数据结构,红黑树?
11.线程池?
12.sleep和wait?syncronized等
13.service轮询?
14.new String其实考察的是JVM堆栈之类,判断一个对象是否死亡,垃圾回收的方法等
15.Activity和Fragment生命周期?
16.进程保活?
17.数据存储?共享参数,数据库,contentProvider?
爱奇艺的面试确实内容很多,方面很广,想起来的就这些,哈哈。
其他公司
其实面试总体来说都是大同小异,只是公司侧重点不一样,除了四大组件基础之外,一些面试点总结如下:
1.JVM相关知识,判断一个对象是否死亡,垃圾回收的方法等。
2.OkHttp底层实现?
3.三级缓存?Glide内部原理?
4.插件化,组件化,模块化?
5.MVC,MVP?
6.RxJava?
7.事件分发机制?
8.hander消息机制?
9.性能优化,代码重构,oom方面?
总结
对前段时间的面试做一个总结,希望对大家有用。同时自己也即将开始一份新的工作,进入到人生的一个新的阶段,愿自己更加勇敢,尽自己最大的努力给自己最好的生活!