(帅张)stormzhang 跟你谈一下面试那些事儿
-
面试时企业最看中你什么能力?
-
我面试到底问什么?
-
Android 面试那些事儿
互联网招聘平台
-
拉勾-专注互联网职业机会
-
简寻-让职位推荐更精准
-
100 offer-帮最好的互联网人发现更好的offer
-
BOSS 直聘-互联网招聘神器
-
LinkedIn (领英)
-
哪上班
一力顶十巧(刷题)
字节跳动
一面(1hour):
0、自我介绍
1、handler机制,sendMessage和post(Runnable)的区别。
2、ThreadLocal原理,底层实现
3、HashMap底层,扩容,LinkedHashMap
4、Service的onBind和onStart差别
5、Activity启动生命周期,A跳转B
6、Android持久化方案,SharedPreference是否可以跨进程通讯。ContentProvider
7、ClassLoader机制,双亲委派。如果我要写一个Activity类,那怎么保证加载的是我自己写的Activity
8、算法题,约瑟夫环
9、反问
二面(1hour):
0、自我介绍
1、项目技术点详解
2、写过什么自定义View
3、OkHttp代码看过吗,用了什么设计模式
4、MVC、MVP区别,项目中的实现。
5、LiveData和EventBus的相关讨论,真的是讨论,畅所欲言
6、看过哪些源码
7、SharedPreference相关
8、Android动画了解吗,用过什么
9、TCP、UDP区别,面试时的语音用的是什么,为什么要这么用。
10、代码题,5个线程对一个int进行累加到1000.
11、反问
三面(50mins):
0、自我介绍
1、算法,跳棋盘
2、浏览器输入URL到渲染全过程
3、Http请求报文响应报文
4、http2.0有哪些优化
5、用过哪些网络库
6、OkHttp的Intercepter
7、Android持久化方式
8、Java线程同步的数据结构
9、反问
总结:字节跳动面试官都很和善,所有的问题都是在讨论,我不会的他们也容许我猜一下,然后告诉我猜的对不对……
华为
一面(1hour):
0、自我介绍
1、项目介绍,技术点相关。
2、C++和Java区别,GC
C++不熟,只能说内存管理相关的问题,所以就问到了GC。然后说分代收集算法。老年代担保、元数据区从JVM移到了本地内存这些。
3、线程相关,Runnable和Thread的区别。
Thread类是实现了Runnable接口,平时使用起来可以使用start方法调用。线程池基本传Runnable对象,平时也是线程池用的多,所以具体相关不太熟。
4、线程池
5、synchronized,volatile
6、继承相关,多重继承和接口
7、网络编程
8、UPD,TCP区别
9、最大的优点
10、最大的缺点
11、算法,二叉树中序遍历,真是早起毁一天,竟然没撕出来,我真想给自己两耳光。不过面试官给我总结的很好,说要利用栈的特性,先进后出,所以要保证左子树先进根结点再进,这么思考之后就顺利了很多。
总结:早上状态很差,简单问题也会卡壳,希望大家还是能够选择自己状态好的时间点面试……。
二面(40mins):
0、介绍一下项目
1、Android四大组件,详细讲一下。
2、Launcher启动APP的全过程。
icon存入口Activity信息
AMS通知Launcher去pause。
Launcher通知AMS已经pause
AMS检查进程是否已经启动,如果不启动则启动进程。并且调用ActivityThread的main方法。
启动之后通知AMS已经启动
然后AMS将入口Activity信息传递给APP。
APP启动对应入口Activity,并且创建对应上下文并且调用Activity的onCreate方法。
3、进程间通信,AIDL,Binder。扯了一会说进程间通信平时怎么做的,就说了一下AIDL相关的Demo实现什么的。说到了自己程序里面有拉起微信的这个功能(也就是广播)。
4、设计模式了解吗,平时用过哪些设计模式。
5、算法题:输入一个数n,代表有n个点,一个二维数组,二维数组代表相连的点,要求输出连通起来的点。
如果n=6,数组假设是{{1,2},{2,3},{4,5}},则输出{{1,2,3},{4,5},{6}}
吐槽一下,本来24号早上约的9.30和10.30两轮面试,一次约两轮我也是醉了。然后就二面拖了快一个小时才面上。早起代码状态真的差,这两题都写了分别用了快20分钟,真的捉急。
一个午觉起来,收到了面试通过的短信,效率还是非常高的。还以为挂了呢,看来只是面试官想吃饭了……
三面(<30分钟):
0、自我介绍
1、公司实习期项目
说了RePlugin框架原理,说了ffmpeg动态链接库开发方面的失败经历,说了Android的适配,和最近影响到的AndroidQ相关新特性的适配。
2、自己大学生活中攻克的最难的技术难点。
3、什么情况下会压力特别大,怎么处理的。
4、职业规划
…
综合起来就是了解个人情况,技术问题都是自己说的。还是非常愉快轻松的。
总结:华为面试安排非常紧张,但是反馈效率特别高,一二面结束马上会短信通知是否通过。然后隔天直接三面,流程走的非常快。
阿里巴巴
一面 50分钟
1.项目相关
2.安卓AIDL
3.四大组件
4.Activity四种启动模式
5.Fragment生命周期
6.Activity之间的通信方法
7.SSL/TLS,以及位于哪一层
8.GET和POST区别,登录用哪个
- 算法:层序输入二叉树,计算深度
二面 25分钟
1.项目相关
*三面 1小时
1.项目相关及拓展
2.场景实现结合安卓特性分析
3.算法:4道数组题及其变形题,主要考逻辑
HR面
1.常规问题
项目是两个local / offline安卓app,总体上项目扯得比较多,包括底层原理、开发需求、实现方法、优化拓展等
小米
第一面:
-
问了一些Android基础;
-
2个算法。
第二面:
-
问了一些JVM相关;
-
类加载器;
-
FrameWork层。
第三面技术经理:
-
问了一下项目经历;
-
离职原因;
-
期望薪水;
-
解决问题能力等。
-
顺便写了1个算法。
第四面,第四轮貌似是个技术专家之类的角色:
-
一直在追问各种原理和基础细节,还有一些比较古怪的问题,考察基础和反应能力;
-
1个算法;
-
总结:有4个算法。小米的技术团队还是比较强的,一线工程师的基础都很扎实。不是很熟悉的技术不要往简历里面写,被揪住了是会扣分的。很注重基础细节,基础一定要扎实。
腾讯
一面(30mins):
0、自我介绍
1、View过度绘制有什么工具进行查看
2、SharedPreference两个进程同时进行读写会有什么问题
3、Android进程间通信方式
4、热修复原理,讲的Tinker
5、DNS协议,CDN
6、算法题,一个数组有两个数字不同,其他都成对出现,怎么找出来
7、智力题,一块钱买一瓶水,两个空瓶换一瓶水,n元能喝几瓶水。
总结:面试完又被说表现得不错了……
二面(1hour30mins):
0、大模拟代码题……一个小时
三面(2hours30mins):
0、自我介绍
1、实习工作深挖
2、RePlugin原理深挖,其他插件化框架对比
3、为什么要选择RePlugin框架
4、你觉得自己对于Android掌握到了什么地步
5、看过什么源码
6、你为什么要看源码
7、你为什么要写博客
8、知道哪些著名开源框架
9、什么是进程,进程调度算法
10、什么是线程
11、你觉得什么是JVM
12、有哪些线程同步算法
13、死锁是什么,举个例子
14、Object有哪些方法
15、Java异常有哪些,Error和Exception区别
16、OSI七层模型,TCP、UDP是哪一层,应用层有哪些协议