往日光鲜亮丽的互联网企业在今年彻底进入了寒冬,往年的高不可攀,低成本运营,在今年都不再是护身符。更是有不少互联网大厂开启了裁员模式,其中就有百度、阿里巴巴、快手、汽车之家等知名企业。
从今年三月起直到现在互联网各厂裁员的消息就从未停歇过,这股寒流真是……
如今,国内移动互联网的红利期已经过去,Android 开发工程师也从最初的一人难求,到现在的一个岗位千人竞争,僧多粥少的情况直接导致整个行业对求职者的要求越来越高。可以说,初中级工程师基本已无立足之地,即使高级工程师也经常在面试中碰钉子。
身边不少朋友都反馈说自己投的简历石沉大海,今年的互联网市场到底怎么了?
如今市场到底需要什么?
21 世纪最需要什么,当然最需要人才,大厂也不例外。如何定义人才呢?
- 刷 500 道算法题就是人才?那刷 499 的算什么!
- 掌握面试八股文的就是人才?那掌握七股的算什么!
- 内推直荐的就是人才?那网络直招的算什么!
我们很难从那些营销宣传给的答案中找到真理,因为他们本质上早已南辕北辙。抛开满脑子被灌输的套路,第一性原理重新思考人才,所谓人才就是能解决问题的人,技术人才就是用技术解决问题的人。
所以,能否帮助企业解决问题,这才是关键。技术本身的价值就在于解决问题,不能解决问题的技术没有价值,至少在当下没有价值。本质上技术圈没啥捷径,就是想尽一切办法学会用技术解决问题而已。
归根结底还是需要不断提升个人价值。
一个人在职场里、在专业领域、在技术上的层层突破和能力塑造,从而建立起自己的个人价值。即使面对裁员,也依旧具备不可替代的竞争力;面临危机,也可能遇到新的机遇和更好的选择。
打个比方,近期面试时就经常被问到这些问题:
- JVM原理
- Android系统启动流程
- Binder在做数据传输过程中,最大的数据量限制是多少?
- 为什么不能在子线程更新 UI ?
- 如何从线程、系统层面出发优化启动速度?
- OkHttp 连接池复用原理
- Retrofit核心实现原理
- 组件化、插件化、热修复 原理
- ……
大部分Android开发者一遇到这种面试题就直接懵逼了,不少人不是没有看过相关的解答,但也都只是浅尝辄止,没有深入掌握其中原理,面试的时候自然会被问个措手不及。最要命的是面试官还会根据你的回答来一步一步深入,直到你回答不上来为止!
很多求职者抱怨大厂“面试造火箭,工作拧螺丝”,但实际上,面试中的大多数问题都是在全方位地考察你对技术的理解深度,以及解决问题的能力。
那些看似无理甚至无用的问题:比如“Okhttp请求复用有没有了解”,其实是面试官想借此看看你对网络优化和Socket协议的理解情况和掌握程度,进而引伸到你对网络架构、设计模式的理解。在熟知Okhttp源码的前提下,你才能够答好这道面试题。
比如优化方面,多少人往往就是说一些自己编写的业务,一些去除页面多余嵌套、使用线程池、ViewStub 这些非常浅的方案。其实更多的,面试官还是希望能够听到,线上复杂环境,低端机/弱网等因素下,用户触发的一系列的体验问题。
像在进行启动优化的时候,例如你从线程角度做启动优化,你需要了解在 Linux 层线程的 nice 值,线程优先级对调度的影响等。在进行内存优化的时候,就必须要精通JVM!
好了我就说这么多吧,如果在继续讲下去估计这文章篇幅放不下了。在平时的闲暇时刻,我喜欢去找一些Android 相关的技术博客及一些面试题的解析看看,给自己充下电,对于面试题的解析我整理成了一个文档形式,往年的今年的都有在内,按不同的技术板块进行分类了,主要也是方便后面换工作,以备不时之需。有需要的可以直接点击此处↓↓↓进行参考学习!!!
有需要的可以复制下方链接,传送直达!!!
https://qr21.cn/CaZQLo?BIZ=ECOMMERCE
第一章 Android 高频面试必考之Java基础
1.面向对象和面向过程的区别
2.面向对象的特征有哪些
3.解释下Java的编译与解释并存的现象
4.简单介绍下JVM的内存模型
5.简单介绍下Java的类加载器
6.谈一下Java的垃圾回收,以及常用的垃圾回收算法
7.成员变量和局部变量的区别
8.Java 中的方法重写(Overriding)和方法重载(Overload)的含义
9.简单介绍下传递和引用传递
10..……
第二章 Android 面试必问之Android基础
1.Activity
2.Fragment
3.Service
4.BroadcastReceiver
5.ContentProvider
6.Android View知识点
7.Android进程
8.序列化
9.Windows
10.……
第三章 Android 面试必问之高级知识点
1.编译模式
2.类加载器
3.Android Hook
4.代码混淆
5.NDK
6.动态加载
第四章 Android 面试必问之性能优化
1.启动优化
2.UI渲染优化
3.内存优化
4.网络优化
5.耗电优化
6.安装包优化
第五章 Android 面试之开源库分析
1.HTTP与缓存理论
2.OKHttp
3.Retrofit
4.Glide
5.……
第六章 算法面试题汇总
1.排序
2.二叉树
3.链表
4.栈 / 队列
5.二分搜索
6.哈希表
7.堆 / 优先队列
8.二叉搜索树
9.数组 / 双指针
10..……
第七章 Android面试之Flutter相关面试题全解析
1.Dart部分
2.Flutter 部分
第八章 Android面试必问之设计模式
1.请列举出在 JDK中几个常用的设计模式?
2.什么是设计模式?你是否在你的代码里面使用过任何设计模式?
3.Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
4.在 Java 中,什么叫观察者设计模式(observer design pattern)?
5.使用工厂模式最主要的好处是什么?在哪里使用?
6.举一个用 Java 实现的装饰模式(decorator design pattern)?它是作用于对象层次还是类层次?
7.在 Java 中,为什么不允许从静态方法中访问非静态变量?
8.设计一个 ATM 机,请说出你的设计思路?
9.在 Java 中,什么时候用重载,什么时候用重写?
10.……
有需要的可以直接点击此处↓↓↓进行参考学习!!!
有需要的可以复制下方链接,传送直达!!!
https://qr21.cn/CaZQLo?BIZ=ECOMMERCE
作为过来人,我发现很多人对于 Android 知识的掌握还是多浮于表面,导致对一些核心底层技术点却只停留在“使用过”甚至是“听说过”的阶段,这其中甚至不乏一些工作 5 年以上的 Android 工程师。
诸如这些困扰,相信很多Android开发都有体会:
-
工作场景中遇到难题,往往只能靠盲猜和感觉,用临时性的补救措施去掩盖,看似解决了问题,但下次同样的问题又会发作,原因则是缺乏方法论、思路的指引以及工具支持;
-
能力修炼中,缺乏大型项目这一实践环境,对底层知识只能通过理论知识进行想象,无法认识其在工作实战中的真实面目和实操过程;
-
职场晋升中,只管功能开发,不了解底层原理,缺少深入地思考与总结,无法完成复杂系统设计这类高阶工作,难以在工作中大展拳脚,而有挑战的工作往往只留给有准备的人。
总之,一旦遇到问题,很少人能够由点及面逆向分析,最终找到瓶颈点和最优解决方案。
网友评论