最后
那我们该怎么做才能做到年薪60万+呢,对于程序员来说,只有不断学习,不断提升自己的实力。我之前有篇文章提到过,感兴趣的可以看看,到底要学习哪些知识才能达到年薪60万+。
通过职友集数据可以查看,以北京 Android 相关岗位为例,其中 【20k-30k】 薪酬的 Android 工程师,占到了整体从业者的 30.8%!
北京 Android 工程师「工资收入水平 」
今天重点内容是怎么去学,怎么提高自己的技术。
1.合理安排时间
2.找对好的系统的学习资料
3.有老师带,可以随时解决问题
4.有明确的学习路线
当然图中有什么需要补充的或者是需要改善的,可以在评论区写下来,一起交流学习。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
双非(非985,非211)一本电信专业毕业,半跨行从事IT行业,工作三年,跳槽前没有互联网履历,第一份工作在外包公司任职,第二份在公募基金公司任职。
如果你是专科毕业,我建议你至少要考个本科学历
现在很多公司简历审核的时候都会卡学历,我之前任职的基金公司甚至一度卡到985,211。虽然IT是靠能力吃饭的行当,但是随着从业人员的增多,市场的门槛也会随之调整。我有时候甚至觉得本科都有点不够看,建议专科毕业的同学至少要考个本科学历,不然很容易失去面试机会。即使面试通过了,在最终的HR面也很容易被刷。
####三.面试准备
3.1养成日常学习的习惯,而不是依赖考前突击
我的面试准备周期很长,差不多从17年12月底开始有想出去看看的打算,一直到18年6月才最终拿到满意的offer,这个期间我一直在查漏补缺。但我的学习周期更长,从17年5月进入一个日常学习的状态,花了一年时间跟着网课完成了系统性的学习,中间还看过很多书。
我不建议大家只在面试前夕进行突击学习,背面试题,这种技巧可能会让你获得一个offer,但没办法提升你的个人能力。我建议养成一个日常学习的习惯,每天抽空学几个小时,在面试前把总结的知识点重温一遍即可。这种习惯日复一日所带来的复利会让你的技术在某一刻由量变产生质变。
3.2人不是神仙,不可能面面俱到
业内经常会调侃,面试造航母,工作拧螺丝。你不可能问什么都能答的上来,所以你要调整好心态坦然接受失败。不得不说准备面试真的是个很痛苦的事情,耗费精力不说,你可能突然会发现你原来这也不会,那也不懂,自以为拿手的本事被人两三下就问懵逼了,信心严重受挫。但你要相信自己,跌倒了不要紧,再爬起来就好。
关于面试具体要准备什么,聊这方面的文章很多,我简单梳理一下,后面也会有我部分公司面试题的总结。
①多线程、JVM
这两块的知识点是让你能顺利通过大厂一面的保证,我所经历过的阿里、头条面试一面基本围绕这些知识点展开。
②开源框架
我觉得多多少少需要看一些框架源码,了解其中的原理,掌握其中的核心,并且能用自己的语言,陈述出来。还有时下比较流行的东西面试官问的几率很高,比如组件化、hybrid。多读读源码也能培养自己读代码的能力,这样的本事能让你很快的了解一个新的项目或者一个新的框架。
③性能优化
这一块也是很多公司喜欢问的,特别是当部门架构组团队招人的时候喜欢问。我不太擅长这方面,就不多谈了。
④数据结构及算法
在我系统学习的过程中我是把数据结构和算法跟着课程学了一遍的,但是我面试期间是完全放弃复习算法的。这么说并不是说算法不重要,头条的面试上来就会考一道算法题,喜欢考算法的厂也越来越多。只是大家要根据自己的实际情况分配复习的比重。毕竟数学考试最后一道大题你做不来,你可以把前面的小题争取全部做对。
####四.简历
简历是敲门砖,也可能是面试的引线
大家一定要重视简历。对于学校不优秀,工作背景不突出的同学,简历是你的敲门砖。简历写的不好,你可能直接会错过一次展示自己的机会。
在面试中很多面试官会根据简历来提问,所以你擅长的东西,一定要写在突出的地方让面试官看到,主动引导面试官问你你擅长的问题。在回答问题的时候,千万不要只言片语草草结束。每次被提问,都是一次展示自己的机会。尽可能的说全,说详细。接着面试官可能围绕你说的内容进行深挖去考察你,所以你的知识点不能浮于表面,不然两三个回合可能就被问的哑口无言。如果你实在有些知识点不懂,尽量的在回答中规避这些细节,免得面试官一时兴起问你一下。
那么简历到底该怎么写,有些同学可能会觉得,我平时工作都在堆业务,项目上没有什么可以写的怎么办。首先再回头看一看项目里是不是真的没有什么闪光点,日活、品控、性能这些都能作为你的谈资。如果实在没有那就去研究两三个主流开源框架,读读Android SDK源码,写点开源项目放到github上。你也可以搞明白自己项目的业务架构,钻研一下组件化、热修复、插件化、hybrid等热门技术,深究一下性能优化比如卡顿监测、APK瘦身、DEX加密、过渡绘制等。每一个点它都可能成为你成功的钥匙。
####五.面试题
生活是场修行,认真对待每场面试
这里写了部分大厂面试题作为大家复习的参考,平安系的面试主要问的项目,包括个别小厂面试没什么参考性,这里就不写了。
头条的面试质量很高,复盘的时候有种醍醐灌顶的感觉。
携程的面试很不走心,大老远跑一趟最后面试官都不给我提问的机会面完直接走出去了,我也没差到这种地步吧。
阿里的面试比较随机,两次下午上班的时候来电面试,一次是晚上来电面试。
5.1东方财富
笔试
1.简述类加载机制
2.写三种单例的实现方式
3.Activity生命周期
一面
1.Handler机制
2.事件分发机制
3.乐观锁与悲观锁
二面
1.Android 7.0 8.0 p 兼容性问题
2.嵌套滑动
3.营销工具比如列表第三位展示广告,如何设计接口
5.2蚂蚁金服
一面
1.内存泄漏
具体场景
2.大图加载
2.1.大图加载的缓存
2.2.Bitmap优化
3.Handler机制
3.1.子线程能不能创建Handler
3.2.线程间通信其他方式
4.线程的创建与退出
4.1.乐观锁与悲观锁
4.2.volatile原理
4.3.读写锁的应用
5.RecyclerView与ListView的区别
5.1RecyclerView为什么这么设计
5.2应用
6.自定义控件
6.1.事件分发机制
6.2.动画
7.okhttp支不支持优先级
7.1.ssl握手谁实现的
7.2.websocket应用
8.简述日志系统
二面
1.介绍项目架构等,围绕项目进行提问
2.序列化的作用
3.子线程轮询阻塞队列如何安全回收线程
5.3Musical.ly(头条)
一面
算法:数组中的数据前半部分递增,后半部分递减,排序并去重
1.Java虚拟机
1.1虚拟机内存结构
1.1.1哪些是线程私有,哪些线程公有
1.1.2静态常量的存储位置
1.1.3无穷递归方法引发的问题
1.2.GC机制
1.2.1.GC roots是什么
1.2.2.Handler造成内存泄漏的整个引用链
1.3.什么情况会产生ANR
1.4广播
1.4.1.onReceive方法调用线程
1.4.2静态广播接收流程
1.4.3动态广播接收流程
1.4.4动态广播能不能重复注册
1.5.SurfaceView原理及使用注意事项
1.6.ButterKnife工作原理
1.7.仿微信朋友圈图片展示设计思路
------以下问题都是面试官根据简历问的------
2.热修复
2.1热修复原理
2.2.假如某个类A有个bug,热修复的整个流程
2.3该修复方案是否能避免oat导致的一些问题
3.LeakCanary原理
4.Groovy插件
4.1.APK瘦身如何实现的
4.2.自定义任务在某个任务之前或之后执行怎么写
4.3.Gradle打包的整个过程
5.看过哪些Android源码
拦截Activity跳转有哪些Hook点
6.Groovy和Java的比较
二面
1.类加载过程
1.1触发类初始化的时机
1.2被动引用
2.Activity启动模式及几个模式的应用场景
3.onSavedInstanceState相关
3.1灭屏会不会触发onSavedInstance
3.2.onRestoreInstanceState和onSavedInstanceState是否成对出现
4.Service生命周期的理解
最后
考虑到文章的篇幅问题,我把这些问题和答案以及我多年面试所遇到的问题和一些面试资料做成了PDF文档
喜欢的朋友可以关注、转发、点赞 感谢!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!