前言
文章篇幅较长,建议耐心食用,相信对你有帮助。码字不易,如果有误,欢迎指出。
前部分是面试经历,后部分是附带的问题笔记/推荐回答/书籍。
我的微信小号有一组特殊的朋友。他们从 CSDN上看到我之前发布的《从阿里到网易,一位非985/211本科应届生的一年求职路》后留下邮箱询要面试资料的,我在邮箱发送资料之后我们互相添加微信认识聊上的。
上上周,他们中有几个生通过微信找我咨询了一些找工作的问题,包括面试会问哪些技术,怎么更好的回答,如何怎么选择工作机会等等。和他们沟通交流中可以明显感觉他们的就业焦虑。一方面担心受疫情的影响,心仪的公司缩招或者不招;另一方面则是自己技术的不自信,担心面试不通过。我很能理解他们。
上周,有一个以前在帅张星球认识的朋友,也同在广州。他因为年前公司融资出现了问题而离开公司,现在也正在找工作。他询问面试所遇到的技术问题及如何看待及回答这些问题。我们前后沟通了两天,针对他的问题我一一给出了文字的回答及参考方案,给了我以前面试准备的知识体系及针对每个问题用语音详情地模拟回答了一遍,希望他能收获一些新的知识及回答技巧。虽然我们素未谋面,但是我是真的希望他能找到心仪的工作。
一面(1小时14分)
主要问java,以及虚拟机,问了一点android
1.实习项目有关的介绍以及问题回答
2.反射与代理的区别,动态代理,静态代理,二者的区别,以及代理模式的UML图
3.字节码技术
4.虚拟机的双亲委派,以及好处
5.虚拟机栈的作用,以及什么情况下会发送Stack Overflow
6.谁能做GCRoot,为什么计数法不如可达性好
7.为什么要分新生代和老年代,如何区分
8.GC算法都介绍一下
9.类加载的过程,方法区中存的是什么,类型信息都包括什么,如何判断两个Class是否相等。
10.HashMap的put方法讲一下,讲一下如何扩容,讲一下一个类作为HashMap,要实现哪些方法,equals和hashCode有什么区别和联系
11.消息机制讲一下,讲一下ThreadLoacal,讲一下Handler处理信息有什么方法(除了handleMessage还有什么),MessageQueue是否有长度限制,android中Message多不多?
12.Activity A到Activity B跳转的一个生命周期的过程
13.Activity A(standard模式)跳转到B(单例模式),B再跳转到A,此时返回,会出现什么情况
14.InVisible和Gone的区别,Gone和ViewStub的区别
15.字符串第一次出现一个的字符
二面(34分)
计算机网络相关
1.osi七层架构,物理层做什么的
2.输入网址之后发生的一些列事情
3.DNS用了什么协议,具体是怎么做的
4.TCP的三次握手,以及流量控制
5.HTTP报文里有什么
6.HTTP与HTTPS有什么区别,加密算法是什么
7.HTTP的响应码有哪些?
8.get与post的区别
9.两个有序数组,找到中位数
三面(50分钟)
深入android方面以及实习经历
1.实习项目有关(包括一些具体实现,以及一些关键问题)
2.LayoutManager的作用
3.RecyclerView用的多么有哪些了解,如何去实现双层瀑布
4.如何去设计一个SDK(很多细节的问题)
5.扑克牌,抽五张是同花的概率,抽五张是顺子的概率
6.RN以及Redux的了解,好处,以及使用,以及工作中对于android和RN的比重
7.单例模式的好处,那么什么时候不去用单例呢?
8.SP的内部实现了解么?如何实现的序列化
9.了解注入么?
一些建议
建议题主到拉勾网、内推网或者其它招聘网站看看各个公司对一个 Android开发工程师的招聘要求,你会发现一些共同的特点,抛开对学历工作经验的限制,我总结一下:
1.扎实的Java基础;
2.熟练使用 Android的各个组件;
3.熟悉 Android网络编程;
4.熟练使用Git/svn版本管理软件;
5.具有良好的沟通协调能力和团队意识
6.良好的学习和抗压能力
7.良好的撰写文档的能力;
8.做过 Android性能优化
9.握至少一门数据库语言;
10.熟悉设计模式;
11.熟悉 Android的单元测试
12.使用过流行的开源框架;
13.熟悉jNi编程;
14.有上架应用加分
15.有GIthub的加分
16.有个人博客的加分
17.写过框架的加分
虽然很多公司在招聘 Androld开发的时候总是说要求都很简单:“能写应用就行“,但是你会发现只有具备上述十几条之中半数以上的特征你才能在面试时轻松过关网上的资料很多,想要找到工作还是把基础打扎实吧。如何打好基础呢?Android架构师筑基必备技能有哪些呢?看一下思维脑图:
架构师筑基包括哪些内容
我花了将近半个月时间将:深入 Java 泛型.、注解深入浅出、并发编程.、数据传输与序列化、Java 虚拟机原理、反射与类加载、高效 IO、Kotlin项目实战等等Android架构师筑基必备技能整合成了一套系统知识笔记PDF,相信看完这份文档,你将会对这些Android架构师筑基必备技能有着更深入、更系统的理解。
最后
总而言之,Android开发行业变化太快,作为技术人员就要保持终生学习的态度,让学习力成为核心竞争力,所谓“活到老学到老”只有不断的学习,不断的提升自己,才能跟紧行业的步伐,才能不被时代所淘汰。
在这里我分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司19年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。需要的朋友可以点这里免费领取
还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。 领取地址: Android学习PDF+架构视频+最新面试文档+源码笔记
提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。 领取地址: Android学习PDF+架构视频+最新面试文档+源码笔记