10、悲观锁与乐观锁的区别
11、区块链的概念(因为我的研究方向是区块链,面试官让我一句话介绍区块链并且要让他能听懂)
12、网络netty 实现了什么功能,长连接的原理、底层的代码看过吗(表示真没看过)
13、怎么保证长连接不断开?怎么发现交互失败?
14、手写算法 大数相加
9.17 二面
1、java的字节码是什么
2、我们基于字节码能做什么事情
3、java本身和C的区别
4、java为什么可以一次编译终身运行
5、JAVA是解析型还是编译型语言 和python C有什么区别
6、代码混淆有了解过吗
7、动态链接区和静态链接库的区别
8、TCP协议如何保证可靠传输
9、一个完整的https的整个过程用到来哪些协议
10、怎么改进UDP让他实现可靠传输(好像是可以利用应用层来实现TCP的一些功能,从而达到可靠性,具体可能可以参考一下QUIC)
11、git rebase git merge 的区别
12、为什么想投客户端的岗位
13、算法题:数组的数字合并成最小数 LC179
9.20 三面
3、区块链的理解,有哪些实际落地的场景
4、防篡改不用区块链怎么实现
5、觉得区块链有什么可发展的空间或场景
6、netty的线程模型
7、netty单线程模型怎么处理并发的问题
8、对于客户端开发的理解是什么
9、算法题 LC93
10、编译原理操作系统的理解
11、最近在看什么书
12、有没有阅读开源框架
这次面试,很多东西自己知道,但是表达得不是很清晰。所以在这里大家最好是对着自己的简历,模仿一下,假如你是面试官,会怎么问,你要怎么答才会让他满意,换位思考。
下午去的是车公庙,金融公司。
中安信业
这家公司,好高大上,办公环境好屌,个个都是穿正装,感觉自己好像一个屌丝。是一个前端架构师和另外一个小伙一块面我的,恩,感觉他们对Android方面不是特别了解
一面
1、自我介绍
2、问项目
3、观察者模式是干嘛的?手写个出来
4、数据库怎么升级版本?
5、view的事件分发机制的理解,出现滑动冲突怎么办?
5、线程T1,T2,T3,T5,T6,怎么按顺序执行?
6、跨进程通信有哪些?AIDL能传对象吗?说一下binder的工作机制?
7、说一下你了解的一些图片开源框架?怎么选择?
8、项目安全方面,你们是怎么做的?
9、还有什么问题想问的?
总共面试了大概一个半小时,然后就回去等通知…他们不是专门做Android的,但是有一个是移动端的架构师,所以问得很底层…
腾讯
腾讯找我,我很意外,因为我并没有投腾讯,也没有约时间,好像突然袭击一样,所以接到腾讯的电话面试时候,还特么逗比的问一句:那个腾讯,是BAT那个腾讯?
(有个公司叫藤讯)
电话面:
1、自我介绍
2、说一下你项目中做了那些?主要负责什么?
3、activity启动模式有哪些?使用场景?
4、string,stringBuffer,stringBuilder区别?
5、wait和sleep区别,怎么使用?线程冲突了怎么办?
6、什么是死锁,怎么产生,产生条件,怎么解决?
7、有A、B、C、D、E这几个线程,有那些方法让他们按顺序执行?区别在哪?使用场景?
8、view的绘制流程
9、网络请求的框架了解过吗?对比一下他们的区别。
10、说说Glide的源码?
一面
1、自我介绍
2、问项目。问到内裤都没有了。
3、view的绘制原理。
4、手写冒泡、插入算法。有什么改进的地方吗?
5、平时遇到什么难题呢?怎么解决,举个例子?
6、线程相关
7、进程保活?
8、hashmap原理,冲突,解决
9、写个算法(题目忘记了)
…然后就没然后了,不过去腾讯面试,收获真的很大,很多不懂的,和大神请教…我感觉腾讯的面试就是一个问题从浅慢慢深入,问到你不懂为止。
总结+分析
简历首选内推方式,速度快,效率高啊!然后可以在拉钩,boss,脉脉,大街上看看。简历上写道熟悉什么技术就一定要去熟悉它,不然被问到不会很尴尬!做过什么项目,即使项目体量不大,但也一定要熟悉实现原理!不是你负责的部分,也可以看看同事是怎么实现的,换你来做你会怎么做?做过什么,会什么是广度问题,取决于项目内容。但做过什么,达到怎样一个境界,这是深度问题,和个人学习能力和解决问题的态度有关了。大公司看深度,小公司看广度。大公司面试你会的,小公司面试他们用到的你会不会,也就是岗位匹配度。
选定你想去的几家公司后,先去一些小的公司练练,学习下面试技巧,总结下,也算是熟悉下面试氛围,平时和同事或者产品PK时可以讲得头头是道,思路清晰至极,到了现场真的不一样,怎么描述你所做的一切,这绝对是个学术性问题!
面试过程一定要有礼貌!即使你觉得面试官不尊重你,经常打断你的讲解,或者你觉得他不如你,问的问题缺乏专业水平,你也一定要尊重他,谁叫现在是他选择你,等你拿到offer后就是你选择他了。
另外,描述问题一定要慢!不要一下子讲一大堆,慢显得你沉稳、自信,而且你还有时间反应思路接下来怎么讲更好。现在开发过多依赖ide,所以会有个弊端,当我们在面试讲解很容易不知道某个方法怎么读,这是一个硬伤…所以一定要对常见的关键性的类名、方法名、关键字读准,有些面试官不耐烦会说“你到底说的是哪个?”这时我们会容易乱了阵脚。正确的发音+沉稳的描述+好听的嗓音决对是一个加分项!
总结
最后小编想说:不论以后选择什么方向发展,目前重要的是把Android方面的技术学好,毕竟其实对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
这里附上我整理的几十套腾讯、字节跳动,京东,小米,头条、阿里、美团等公司19年的Android面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。
由于篇幅有限,这里以图片的形式给大家展示一小部分。
详细整理在GitHub可以见;
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
技术进阶之路很漫长,一起共勉吧~