怎样快速突破初级瓶颈,变身高级开发?怎样在短时间内提高自我身价,月薪提高50%?你是否是个代码高手,面试中却发挥不出来,想进阶却摸不着头脑。博主在互联网行业摸爬滚打,百面成钢。特来总结与分享自己面试的心路历程和经验。
先交代一下背景:博主本科毕业于国内某985大学,15年大二开始接触Android开发,参加了两届谷歌举办的全国大学生安卓应用竞赛并获奖。实习和工作都在上海的互联网公司做app开发。曾误入 iOS深处,沉醉不知归路。后来惊醒还是转投回安卓的世界中去。
目前做Android开发三年。本文的目的在于总结回顾上一波的面试,给未来的自己看看当时的努力与心情,更重要的是希望对业内还在迷茫中想要提高自己的开发们指点迷津。
前两个月,我面试了上海多家互联网公司,按规模上至阿里携程新美大,中至爱奇艺安居客B站平安科技,下至格瓦拉触宝科技蜻蜓fm,偏至招行信用卡微鲸科技等。并非有意要面那么多,只是一开始行动力太旺盛不小心简历投多了。
秉承“自己投的简历,跪着也要面完”;以及想一窥上海互联网公司发展情况等多种心理下,横扫了各大Android面试题。经验积累了不少,从简历准备到技术准备再到扯淡环节,甚至于怎样针对不同的公司不同的面试官提出不一样的问题等等。
这整个过程不是一帆风顺的,就像给程序做优化一样,一点点完善、一点点让自己的表现趋近完美。我当时甚至会在家对着镜子针对可能被问到的问题,练习说话的语速和表情。
请理解一个心机 girl 总会想太多,比如有的问题面试官或许会觉得这道题是他的杀手锏,那你就不要表现出一副做了充分准备、分分钟秒杀他的气势。
毕竟咱面的是普通开发,最后还得在人手底下做事呢~ 这种情况下最好的办法是面露一点点思考与回忆交加的表情,一点点说出对方希望你说出来的答案;而不是一股脑全说完了。
当然了,不同的面试官有不同的套路,比如我最欣赏携程的一个初面面试官,能感觉到那是一个智商超群的人。和聪明人讲话,你就不用再拐弯抹角了。Anyway,假如这个面试官最后露出了满意的笑容,那就恭喜你成功了_~
面试真的是个体力活,有两次我都想放弃了懒得再面了,让我继续坚持下去的除了有始有终的信念以外,还有照云兄一句“ 所谓自由就是随时拥有说’不’的权利。”
我理解就是给自己多一种选择。这一波面试下来,最遗憾的还是阿里几个想让我去的部门都在杭州,但我是上海人还要在交大在职读研。
另外,上海的BAT Android岗位实在是太少了,腾讯基本就不在上海招。曾有冲动为了工作收起行囊就那么离家去杭州,但理智最终制止了我。阿里现在有点像软件界的华为,基本打来的电话都在晚上八点,有种血汗工厂的感觉(⊙﹏⊙)b~
总体来说,上海的互联网公司规模都没成气候,还是中小企业居多。看了好几年上海互联网的起起落落,唯有”恨其不争“能形容这种感受了。PS:我最后选择了一份”钱多事少离家近“的工作:)请不必问我现在何处,因为我一定会对公司和薪资守口如瓶。
话不多扯,上文的各种体会是为了下文抛砖引玉。下面就让我来讲解一下Android技术面试中主要涉及的内容有哪些。
一、Handler 相关知识
1 、Handler Looper Message 关系是什么?
2 、Messagequeue 的数据结构是什么?为什么要用这个数据结构?
3 、建 如何在子线程中创建 Handler?
4 、Handler post 方法原理?
5 、Android 消息机制的原理及源码解析
6、Android 消息机制
二、Activity 相关
1、Activity 四种启动模式常见使用场景
2、onNewIntent()和 和 onConfigurationChanged()
3、onSaveInstanceState()和 和 onRestoreInstanceState()
4、Activity到底是如何启动的?
5、zygote是什么?有什么作用?
6、SystemServer是什么?有什么作用?它与zygote的关系是什么?
7、ActivityManagerService 是什么?什么时候初始化的?有什么作用?
三、Fragment
1 、Fragment 和 生命周期和 Activity 对比
2 、Fragment 之间如何进行通信
3 、Fragment 的 的 startActivityForResult
4 、Fragment 重叠问题
5、Fragment回退栈管理
6、Fragment与Activity通信
7、Fragment与ActionBar和MenuItem
8、没有布局的Fragment—保存大量数据
9、DialogFragment的使用
10、Fragment的startActivityForResult
四、Service 相关
1 、 进程保活
2 、Service 的运行线程(生命周期方法全部在主线程)
3 、Service 启动方式以及如何停止
4 、ServiceConnection 里面的回调方法运行在哪个线程?
五、Android 布局优化之 ViewStub、include、merge
1、用 什么情况下使用 ViewStub 、include 、merge ?
2、他们的原理是什么?
3、布局优化神器 include 、merge 、ViewStub标签详解
六、Kotlin 相关
1、从原理分析 Kotlin 的延迟初始化: lateinit var 和 by lazy
2、From Java To Kotlin
3、怎么用 Kotlin 去提高生产力:Kotlin Tips
4、使用 Kotlin Reified 让泛型更简单安全
5、Kotlin 里的 Extension Functions 实现原理分析
6、Kotlin 系列之顶层函数和属性
7、Kotlin 兼容 Java 遇到的最大的 “坑”
8、Kotlin 的协程
9、Kotlin 协程「挂起」的本质
.........
七、Flutter 相关
1、Dart 当中的 「..」表示什么意思?
2、Dart 的作用域
3、Dart 是不是单线程模型?是如何运行的
4、Dart 是如何实现多任务并行的?
5、说一下 Dart 异步编程中的 Future 关键字?
6、说一下 Dart 异步编程中的 Stream 数据流?
7、Stream 有哪两种订阅模式?分别是怎么调用的?
8、await for 如何使用?
9、说一下 mixin 机制?
10、请简单介绍下 Flutter 框架,以及它的优缺点?
11、介绍下 Flutter 的理念架构
12、介绍下 FFlutter 的 FrameWork 层和 Engine 层,以及它们的作用
13、介绍下 Widget、State、Context 概念
14、简述 Widget 的 StatelessWidget 和 StatefulWidget 两种状态组件类 .
..........
八、Java 相关
1、HashMap
2、 ArrayList
3、LinkedList
4、Hashset 源码分析
5、内存模型
6、垃圾回收算法(JVM)
7、垃圾回收机制和调用 System.gc()的区别?
8、类加载过程
9、反射
10、多线程和线程池
11、HTTP、HTTPS、TCP/IP、Socket 通信、三次握手四次挥手过程
12、设计模式(六大基本原则、项目中常用的设计模式、手写单例等)
13、断点续传
14、Java 四大引用
15、Java 的泛型
16、final、finally、finalize 的区别
17、接口、抽象类的区别 .....
九、总结
只有技术过硬,在哪儿都不愁就业,“万般带不去,唯有业随身”学习本来就不是在课堂那几年说了算,而是在人生的旅途中不间断的事情。
人生短暂,别稀里糊涂的活一辈子,不要将就。
文章内容中涉及到的字节跳动/阿里/腾讯等大厂面试题、源码文档、技术笔记等学习资料,均可以免费分享给大家学习。
网友评论