前言
Android确实不是当年盛况,已经不再像前几年前那么火爆。一个新行业如果经历过盛极一时,那么必然有这样的一条曲线,像我们学的正弦曲线先急速上升,然后到达顶点,然后再下降,最后再趋近一个平稳的值。那么这一两年就已经是在一个饱和值之间浮动,因此在这样的形式下,可能对于个人开发者相应的要求就要高一些。以前是只要你会Android四大组件的都是个香饽饽,那样的时代已经过去了,随着人机交互的体验要求,App的用户体验的要求、流畅度等等,已经不可同日而语。在这样的大环境下,那么对我们的Android开发工程师也是同样的改变。据我了解,中、高级的工程师还是很受欢迎的,所以我认为正确的职业规划应该是金字塔形,核心竞争力一定要扎实!
下面,我记下这次的面经供大家参考,希望对大家有帮助。
面试问题
- 自我介绍
- .项目经历
- 面向对象三大特性
- 介绍String、StringBuffer和StringBuilder
- hashmap扩容为何扩容为2倍
- hashmap如何解决冲突
- hashmap做了哪些优化
- 线程与进程的关系
- Java中线程如何实现同步
- Sychronized和ReentrantLock有什么区别
- Android四大组件
- Activity生命周期和启动模式
- 进程和活动栈的关系
- Window和Activity的关系
- ListView和RecyclerView的区别
- Android消息处理机制(Looper、MessageQueue、Handler)
- 常用布局
- 布局中的merge标签
- 你有什么要问的
反问环节
-
成都那边的工作业务
面试官回答:主要是海外电商业务 -
京东目前的Kotlin和Flutter应用情况
面试官回答:Java和Kotlin都有使用,Flutter也在使用
(PS: 之前面百度美团的时候面试官回答Kotlin好像都使用的比较少,大前端倒是都在用,果然能够节省成本的技术才是公司需要的。。。)
- 下一步的学习发展方向
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
尾声
评论里面有些同学有疑问关于如何学习material design控件,我的建议是去GitHub搜,有很多同行给的例子,这些栗子足够入门。
有朋友说要是动真格的话,需要NDK以及JVM等的知识,首现**NDK并不是神秘的东西,**你跟着官方的步骤走一遍就知道什么回事了,无非就是一些代码格式以及原生/JAVA内存交互,进阶一点的有原生/JAVA线程交互,线程交互确实有点蛋疼,但平常避免用就好了,再说对于初学者来说关心NDK干嘛,据鄙人以前的经历,只在音视频通信和一个嵌入式信号处理(离线)的两个项目中用过,嵌入式信号处理是JAVA->NDK->.SO->MATLAB这样调用的我原来MATLAB的代码,其他的大多就用在游戏上了吧,一般的互联网公司会有人给你公司的SO包的。
至于JVM,该掌握的那部分,相信我,你会掌握的,不该你掌握的,有那些专门研究JVM的人来做,不如省省心有空看看计算机系统,编译原理。
一句话,平常多写多练,这是最基本的程序员的素质,尽量挤时间,读理论基础书籍,JVM不是未来30年唯一的虚拟机,JAVA也不一定再风靡未来30年工业界,其他的系统和语言也会雨后春笋冒出来,但你理论扎实会让你很快理解学会一个语言或者框架,你平常写的多会让你很快熟练的将新学的东西应用到实际中。
初学者,一句话,多练。