8、生产消费者模型弊端、量级越来越大了之后怎么优化
9、并发与并行的区别
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后就是你选择他了。
尾声
评论里面有些同学有疑问关于如何学习material design控件,我的建议是去GitHub搜,有很多同行给的例子,这些栗子足够入门。
有朋友说要是动真格的话,需要NDK以及JVM等的知识,首现**NDK并不是神秘的东西,**你跟着官方的步骤走一遍就知道什么回事了,无非就是一些代码格式以及原生/JAVA内存交互,进阶一点的有原生/JAVA线程交互,线程交互确实有点蛋疼,但平常避免用就好了,再说对于初学者来说关心NDK干嘛,据鄙人以前的经历,只在音视频通信和一个嵌入式信号处理(离线)的两个项目中用过,嵌入式信号处理是JAVA->NDK->.SO->MATLAB这样调用的我原来MATLAB的代码,其他的大多就用在游戏上了吧,一般的互联网公司会有人给你公司的SO包的。
至于JVM,该掌握的那部分,相信我,你会掌握的,不该你掌握的,有那些专门研究JVM的人来做,不如省省心有空看看计算机系统,编译原理。
一句话,平常多写多练,这是最基本的程序员的素质,尽量挤时间,读理论基础书籍,JVM不是未来30年唯一的虚拟机,JAVA也不一定再风靡未来30年工业界,其他的系统和语言也会雨后春笋冒出来,但你理论扎实会让你很快理解学会一个语言或者框架,你平常写的多会让你很快熟练的将新学的东西应用到实际中。
初学者,一句话,多练。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!