开篇
先讲一下我的职业生涯哈,不想看的可以直接到最后一段。我是普通二本出身,一直飘在北京,先是做web网站开发,后转到了Android移动端,也没有什么好运气,就靠一点小机智,得过且过混到16年初,靠着移动互联网大浪把我推到了一家二线互联网企业,在这里才算真正重构了自己,感谢当时遇到的同事,以及有可以和公司一起成长的机会,先后经历了完整的插件化和RN重度封装,知道了虚拟机和Android源码的重要,并开始积累。
18年初,由于公司内部重大调整,动荡不安,再加上自觉jvm和framework很溜了,于是开始看机会,寒冬初期也还算是顺利吧,进了一家普通的一线,可是没想到真正的大厂弯弯绕这么多,内斗激烈,效率如此之低,不是嫡系,你不仅少有升职加薪的机会,连好的项目都拿不到,这个时候迷茫了,大厂也算进来了,结果却如此令人失望,再加上看了一些中年危机的文章,更是稀里糊涂了,于是转而研究各种赚钱方式,基金,股票,房产,开店加盟等等吧。直到去年过年回家,跟老家发小聚会,介绍了各自的情况,才明白中国实体经济竟然是那么的糟糕,脏累险,如果轻易踏足,自己这个小白绝对会被人生吞活剥了的。
还得多谢知乎大神们的引导,这时才明白了一点,知识特别是你本专业的知识,才是安身立命之本,是你最好最快的赚钱方法,读了多少年的书中自有黄金屋,这刻才算真正领悟吧,于是用三个月逐渐修补自己最后的短板:开源库和算法,过程中,逐渐拿各细分行业的小独角兽练手,最后一次就搞定了头条,很顺利。以上就是我的唠叨和感慨,进入头条对于很多985研究生毕业的人来说,是件不太难的事情,可是对于普通人来说,还是个梦想,所以我稍微记录一下心路历程,给别人以参考。
头条面试流程
简历通过之后,HR会先跟你打个电话确认,然后发个流程邮件。
一轮笔试,三轮技术面试,最后是HR面。
在这里要聊一下,头条面试确实很有一套风格:笔试题时间大约只有四十分钟,是1个Java题,4个Android题,1个算法,1个设计,都是经典题型,谁都能写上点东西,这个最考验一个人的水平了,从你答题的深度,可以看出你的水平。技术面,每一轮时间都在一个小时左右,而且都有java,Android和算法,只是侧重点不一样,第一轮是笔试题+基础;第二轮是你简历上写的技术点,不断深入问;第三轮主要是聊你曾经做过的项目,会非常细。最后是HR,就是常见的提问,主要是收集你的情况,实话实说即可,不要太偏激就好。
头条面试题
头条对于员工的管理是极严格的,这些都是不允许透露的,所以为了不招惹麻烦,我就不能具体说每个题是什么了,实际上除了笔试题,其他说了也没意义,每个面试官都会根据自己的喜好以及你的简历,问出无数种问题,而且技术面足足有三轮,你可以幸运地过一个,不可能连续幸运三次,所以还是好好积累吧。
下面举几个最常见的面试问题吧,Java基础:final finally finalize有什么关系,HashMap原理,编译时注解Java虚拟机:按照问到的可能性是大小,类的加载 > JMM > GC > Java内存分区 > oop-klass > JITAndroid基础:Activity A启动B之后生命周期,onSaveInstance()和onNewIntent()调用时机Android源码:消息机制,View的事件处理机制,View的绘制过程,Activity启动过程开源库:OKHttp,Glide,LeakCanary,RxJava实现原理算法:树的深度和广度优先遍历(非递归),100万个树找最大的100个,快排,堆排序操作系统:进程和线程的区别,多线程的实现方法,异步改同步,生产者消费者模式,手写线程池计算机网络:七层架构,TCP的三次握手四次挥手,https和http的区别。软件工程:类图,时序图,如何设计一个项目(往功能性,健壮性,性能性,时间成本四个纬度上套)。设计模式:面向对象七大原则,手写单例,手写观察者,代理模式。
面试准备
首先,一定要先搭建自己的知识体系,再往里面填充各种东西,才能真正掌握,这个填充过程一定要从点滴做起,面试前才去突击是没多大作用的。对于Android工程师来说,这个越来越成熟的岗位,要求是越来越高了,知识体系大约有十个方面:架构师筑基语言基础Java;设计思想解读开源框架,性能优化;微信小程序,Android框架体系架构;NDK模块开发,计算机网络;混合开发Flutter。
总之,北京居不易,而选择理工科的朋友,大多都出身普通,希望大家不要忘本,知识才是改变自身命运的唯一路径。蹉跎这么久,我也是最近两年才渐渐明白这个道理,于是借着这个机会,分享给大家。
系列知识点在开源项目:https://github.com/Android-Alvin/Android-LearningNotes 中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中...
一线互联网大厂Android架构进阶学习路线
- 架构师筑基语言基础
目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。
知识要点:
1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO
- 设计思想解读开源框架
随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。
所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。
知识要点:
1、热修复设计
2、插件化框架设计
3、组件化框架设计
4、图片加载框架
5、网络访问框架设计
6、RXJava响应式编程框架设计
- 360°全方位性能调优
在不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。
另外,随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍。综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。
知识要点:
1、设计思想与代码质量优化
2、程序性能优化
启动速度与执行效率优化
布局检测与优化
内存优化
耗电优化
网络传输与数据储存优化
APK大小优化3、开发效率优化
分布式版本控制系统Git
自动化构建系统Gradle4、项目实战
启动速度
流畅度
抖音在APK包大小资源优化的实践
优酷响应式布局技术全解析
网络优化
手机淘宝双十一性能优化项目揭秘
高德APP全链路源码依赖分析
彻底干掉OOM的实战经验分享
微信Android终端内存优化实践
- Android框架体系架构
Android框架体系架构(高级UI+FrameWork源码) 这块知识是现今使用者最多的,我们称之Android2013~2016年的技术。
Android开发者也往往因为网上Copy代码习惯了而导致对这块经常“使用”的代码熟悉而又陌生:熟悉的是几乎天天在和它们打交道, 天天在复制这些代码 ;陌生的是虽然天天和这些代码打交道,但是并没有深入研究过这些代码的原理,代码深处的内涵。
知识要点:
1、高级UI晋升
2、Android内核组件
3、大型项目必备IPC
4、数据持久与序列化
5、Framework内核解析**
- NDK模块开发(音视频开发系列)
NDK(Native Development Kit缩写)一种基于原生程序接口的软件开发工具包,可以让您在 Android 应用中利用 C 和 C++ 代码的工具。通过此工具开发的程序直接在本地运行,而不是虚拟机。
在Android中,NDK是一系列工具的集合,主要用于扩展Android SDK。NDK提供了一系列的工具可以帮助开发者快速的开发C或C++的动态库,并能自动将so和Java应用一起打包成apk。
image知识要点:
1、NDK开发之C/C++入门
2、JNI模块开发
3、Linux编程
4、底层图片处理
5、音视频开发
6、机器学习
- Flutter学习进阶
2020 年无疑是 Flutter 技术如火如荼发展的一年。现在这门技术也依然非常有价值。
每一个移动开发者都在为 Flutter 带来的“快速开发、富有表现力和灵活的 UI、原生性能”的特色和理念而痴狂,从超级 App 到独立应用,从纯 Flutter 到混合栈,开发者们在不同的场景下乐此不疲的探索和应用着 Flutter 技术,也在面临着各种各样不同的挑战。
知识要点:
1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter Dart语言系统入门**
……
- 微信小程序开发
微信小程序作为现在比较火的编程开发应用场景之一,深受市场的青睐,这让不少开发者眼馋不已。但是对于初学者来说,就完全摸不着头脑了,不知道微信小程序开发制作需要学习那些知识,有需要的朋友可以参考本篇。
本篇知识要点:
1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战
-
Android相关源码解读
这里大家可以去看这一篇文章:【建议收藏】Android中高级大厂面试源码秘籍,为你备战2021金三银四,直通大厂。
其次是认知投资,最重要的是读书,读好书,而不是网络上漫天飞舞的无聊书籍。这里推荐给读者一本我最喜欢的书,《富兰克林自传》,真的是经典之作,如果不知道富兰克林的成就,只觉得是一位老人用质朴的语言,缓缓道来很多人生哲学。读完之后会发现,原来一位不起眼的年轻人,通过对自己人生的不断精进,能够取得如此傲人的成就。
当然还有精力投资,我选择自媒体这条路,目前还只是经常更新文章,通过不断输出倒逼自己增加输入,同时也积攒着自己的小小声名。此外,我觉得视频领域大有可为,视频比以往任何一个时代,更能影响我们的生活。前几天,抖音的日活破 4 亿,快手也成功的打入下沉市场,另一个崛起的,是哔哩哔哩,它占据了很多人的业余时间。当真正的 5G 时代来临时,会给视频领域,带来更多的变革,更多的机会。
身边的很多人,开始进入视频创作领域,在长短视频平台,发挥自己的创造力,怀揣着厚积薄发的信念,一点点的积攒粉丝。
财富投资的事情,我还没有去做,一是目前对资本市场还不太了解,二是不想经历过于分散,同时做好两件事,就已经是一件不容易的事了。
这个时代很独特,我们身处其中,压力很大,但机遇真的很多。2012 年开始,互联网呈井喷之势,短短数年之间,造就很多技术致富的奇迹,使得多少人通过双手完成了阶层跨越。如果世界是一个舞台,现在的我,就是身处其中的一位舞姿稍显拙劣的舞者,不断的努力,去舞出属于我的阶级跳跃。
本文在开源项目:https://github.com/Android-Alvin/Android-LearningNotes 中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中...
网友评论