前言
双非渣硕,本以为简历都过不了...,还好字节能给一次机会。前阵子字节跳动的提前批开始了,看宣传是说有海量HC,机会多多,本着涨涨面经的心理,然后就投递了一下杭州那边的Data部门,首先在这里还要非常感谢内推我的小哥哥,非常热心的帮我跟踪进度,因为中间还出了一些小插曲(我投错部门了。。。),还是热心的小哥哥帮我联系HR,最后把我转到想要投递的部门了,我投的是安卓工程师~面试项目大部分问题是围绕我的开源项目 蘑菇博客 展开的,还有就是我之前准备面试的一些 笔记(大佬请轻喷..)
![](https://img.haomeiwen.com/i23087078/0d7b041ed545a12d.png)
注意:我投的是Android工程师~面试项目大部分问题是围绕我的开源项目 博客 Github 展开的,还有就是我之前准备面试的一些刷题笔记(大佬请轻喷..)有需要的可以查看【Android高级工程师进阶学习】加入我们的圈子领取资料和我们一起吧学习交流吧!
面试时间
HR面完后,等了一个礼拜多,以为凉凉了,没想到收到惊喜,许愿成功~
- 第一天:第一面 + 第二面
- 等了两天:第三面 + HR面
- 过了一周后:等来了意向书
第一面
第一面我觉得应该是基础面,重点考察的是自己技术的广度 和一些技术的掌握情况,一面小哥哥也没有深究于某个特定的点,面试时间大约1个小时。(自我介绍不包含)
1、volite的关键字,干了什么(什么叫指令重排)
2、生产者消费者(非阻塞式)
3、怎样获取当前线程是否是主线程
4、怎样检测函数执行是否卡顿
5、常用的对称加密算法,有什么同
6、view分发反向制约的方法
7、两个线程用不同的对象,怎么养
8、乐观锁使用
9、hashmap底层原理
10、arraylist底层原理
11、webview如何做资源缓存
12、hashmap扩容
13、一张图片100*100的图片在内存中的大小
14、view的事件分发
15、webview和js交互的几种方式,拦截的方法
16、singleinstance的启动模式如果不指定栈名,是怎么分配的
17、wait和sleep的区别
18、jvm线程私有的有哪些
19、动态代理的方法怎么初始化的
20、cglib动态代理
21、三个线程wait,唤醒情况是什么样的
22、最终是谁持有的activity,handler内存泄露
23、handler的sendmessage和postdelay的区别
24、arraylist和hashmap的区别,为什么取数快
第二面
二面考察的是技术深度面试,面试时间大约50分钟左右
1、进程和线程
2、项目中用到过多线程嘛?
3、线程安全
4、死锁
5、线程等待技术(同步机制)
6、Pv操作
7、了解地锁的种类
8、线程池作用
9、进程的内存成分和作用
10、jvm
11、网络协议栈
12、osi七层
13、具体协议
14、HTTP怎么李彤tcp 为什么用tcp 为什么不用udp
15、TCP为什么可靠
16、为什么三次握手而不是两次、四次或者更多
17、HTTP端口
18、为什么要有端口
19、数组和链表往末尾添加一个数据 谁效率高
20、HashMap读取时间复杂(对于指定下标O(1) ) 通过给定值(O(n)) 需要遍历整个数组
21、二分查找时间复杂度O(log2n)
第三面
应该是Leader面,面试时间大概50分钟
1.项目细节:内容,自己完成的部分,引入的第三方库的介绍
2.Http如何判断请求已中止
3.java线程池
4.TCP和UDP的区别
5.Synchronized(Class.this)说的是什么
6.Handler机制
7.ANR的原因
8.线程有哪些状态
9.主线程切换到子线程的方法
10.get和post的方法
11.activity生命周期
12.智力题:一个10升的油桶装满油,两个空油桶,分别为3升和7升,三个油桶均无刻度,如何把10升平均分成5升。
13.算法:一串无序的数字,如何找出缺失的最小正整数
14.概率题:52张扑克牌,分成3份,求大王小王在同一份的概率。
15、TCP和UDP的区别
16、.三次握手怎么实现
17、.三次握手序列号的变化
18、多线程数据安全
19、hashmap原理
20、hashmap中链表的优化
21、进程和线程的区别
22、Handle原理
23、okhttp原理
24、synchronized的作用
25、synchronized和lock的区别
26、http
27、线程安全的集合
28、算法一串字符串,有字母有数字,找出里面的最大
# HR面
花20来分钟做个简单的沟通
- 自我介绍
- 考研的时候为什么选择的是这个学校呢?
- 回顾一下,上大学到现在这段时间内,让自己最有挫败感的事情是什么呢?
- 有哪些方面需要在改进的么?
- 对于以后参加的工作,你主要会看重哪些方面呢?
- 同学这块,大家都有在投递字节这边的岗位么?
- 反问环节:关于面试结果,告知,这边只是做简单的了解,面试结果大约会在一周左右出来,到时候会有邮件或者电话通知。关于面试的结果,需要综合前面的几个面试官进行综合评测,才能决定是否录取。
- 总结+面试前的准备(供大家参考学习)
由于篇幅原因,有需要的朋友请务必麻烦大家帮小编转发一下,因为这样可以帮助更多有需要的人看见,然后在查看【Android高级工程师进阶学习】加入我们的圈子领取资料和我们一起吧学习交流吧!
给大家个建议,面试官如果愿意和你聊组里业务,一定要把握机会好好聊,最好能提出让面试官眼前一亮的问题,直指业务核心。代码谁都会写,基础知识网上都能查到,但是对产品的理解和新的想法不是谁都有的
(1)第一步,面试前整理一个完整知识架构大纲
我将Android进阶体系分为九大模块:
1、性能优化模块
2、NDK模块
3、Android前沿技术
4、App开发框架知识体系(高级UI与FrameWork)
5、Java语言进阶与Android内核
6、移动架构师项目实战
7、提高开发效率的工具运用
8、微信小程序
9、Hybrid 开发
2)第二步,通过大纲对面试中的高频技术逐个攻克
1,NDK模块开发
(一)C++与 C#数据类型总结
(二)C 与 C++之内存结构与管理
(三)C 与 C++之预处理命令与用 typedef 命名已有类型
(四)C 与 C++之结构体、共用体
资料过多,就不一一展示了,每一个章节部分都有对应的学习资料,视频要的就是做全网最系统的 学习资料需要这份学习笔记转发后,后台私信【666】即可领取!
2,架构师练成实战
第一章深入 Java 泛型
第二章注解深入浅出
第三章 并发编程
3,微信小程序
第一章小程序基本介绍
第二章UI开发
第三章 API操作
3)第三步,刷面试题,面试字节跳动算法是必问的
算法刷题小册
经典算法大全
14.AlgorithmGossip:蒙地卡罗法求PI
30大字节跳动Android面试专题
字节跳动总体来说,面试体验还很不错的,尤其是在手撕代码题的时候,面试老哥会先叫你提供思路,如果你说的思路有问题的话,会帮你拨正,然后在进入coding阶段,但是怎奈何平时没怎么练习算法,题目做的少,面试两行泪。。这也算是提前批打响第一枪,期待后面精彩表现~
以上就是我在面试前整理搜集的面试资源和一个学习路线规划,希望能对大家有所帮助,有需要的朋友请务必麻烦大家帮忙转发一下,因为这样可以帮助更多有需要的人看见,然后查看【Android高级工程师进阶学习】加入我们的圈子领取资料和我们一起吧学习交流吧!
网友评论