作者:Android胖
个人简介
本人985学校本科毕业,非科班出身,三年多Android开发经验,半年iOS开发经验,和一个JavaScript小游戏开发经验。技术水平,略低于百度T5的样子(去百度面过,止步第四轮技术面)。一直在创业小厂工作,团队总人数没超过90人过,绝大多数时间处于独立开发,也就是一个人负责一个APP,甚至同时负责多个APP。技术栈得益于产品汪频频更改的需求,还是积累了不少广度,但是因为人少活多,精力有限,所以深度还是有所欠缺。
这次大胆尝试了一下去腾讯面试,在面试前我在网上找了一大堆的资料进行学习,但是感觉很浪费时间;于是就找了一套比较全面性的面试资料和一些进阶资料再刷。由于内容比较多,没有全部看我就去面试了。
下面是我面试的一个过程:
一面
-
hashmap底层实现
-
进程和线程的区别
-
TCP的拥塞控制
-
http的get和post, 详细的
-
hashtable、 hashmap和concurrenthashmap
a. hashtable和concurrenthashmap哪个效率更高
b. Currnethashmap1.7, 1.8的区别
C.讲一下hashmap如何扩容 -
hash算法
-
TCP和UDP, 如果上你用UDP来设计一个可靠的连接
-
锁,单线程锁,共享锁和非共享锁,你有见过哪些锁
a. reenteentlock和synchronized的区别 -
进程调度机制
-
handler实现
a.为什么轮询不会线程阻塞 -
activity生命周期
-
死锁的产生和避免
-
ANR为什么会产生
-
用过android那些组件
-
讲一下启动模式
-
Recyclerview四级缓存
算法是求众数。
因为这是我的第二次面试,第一次腾讯直接一面挂了。所以蛮紧张很多背概念。
这面面蛮差以为会挂,谢谢字节愿意捞我。
二面
1、Recyclerview四级缓存原理具体缓存,具体实现,如何获取
2、TCP/IP四层
3、实现LRU算法、实现栈ArrayList和LinkedList区别
4、handler实现, Ahandler发送的消息B能收到吗,怎么确保不是B收到
5、每个进程空间分配的内存是多大
6、0OM,栈溢出和堆溢出
7、循环调用为什么会栈溢出,int出来的值在栈上还是堆上
8、虚拟地址和物理地址区别
9、String a=new String (),b=a, a=null, b指向哪
10、obejct的equals和==区别, 如果不重写equals那euqals和==区别
11、DNS劫持
算法:两个有序链表的连接
这面表现比上次好很多,因为隔了两个星期,算法顺利撕出来了,这面很注重实现细节,基础,再次感谢字节继续捞我。
三面
首先问你擅长什么,然后项目的优点,项目里遇到的问题,怎么解决的。好尴尬因为我的项目嵌入式
比较多。所以面试官不太感兴趣的样子。问我android网络连接过程,我说不太会。唉下去恶补网络吧。
1、activityA跳转B
2、Http连接过程
3、Http请求报文有contentl ength吗
4、Binder底层实现
5、dispatchevent实现
6、TCP拥塞
7、如何实现断点续传
总结下我的字节面试:
1、背概念是没有办法过面试的,必须去探究看到的知识点细节,去理解。
比如get和post,我从网上看来的他们区别,get是获取信息,post是提交表单,但是面试官一个反问我,get不可以提交信息吗,我就不太清楚了。
2、语言的表达问题,很多概念我们看似理解了,但是把它说给别人听,流畅表示出来,就需要更深层次的理解。
最后
分享一份我自己收录整理的Android学习PDF+架构视频+面试文档+核心笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料。
这些都是我现在闲暇还会反复翻阅的精品资料。里面对近几年的大厂面试高频问题都有详细的讲解,也是对我这次面试通过有很大的帮助。相信可以有效的帮助大家掌握知识、理解原理。
当然你也可以拿去查漏补缺,提升自身的竞争力。
如果你有需要的话,可以私信我【666】获取或者点击查看详情
喜欢本文的话,不妨顺手给我点个小赞、评论区留言或者转发支持一下呗~
网友评论