最后
都说三年是程序员的一个坎,能否晋升或者提高自己的核心竞争力,这几年就十分关键。
技术发展的这么快,从哪些方面开始学习,才能达到高级工程师水平,最后进阶到Android架构师/技术专家?我总结了这 5大块;
我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 PDF(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。
Java语言与原理;
大厂,小厂。Android面试先看你熟不熟悉Java语言
高级UI与自定义view;
自定义view,Android开发的基本功。
性能调优;
数据结构算法,设计模式。都是这里面的关键基础和重点需要熟练的。
NDK开发;
未来的方向,高薪必会。
前沿技术;
组件化,热升级,热修复,框架设计
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
我在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多
当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。
不出半年,你就能看出变化!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
面试题(固定答案不解答,自己可以找到)
顺序是根据记忆排的,没有优先级之分,都是重点。
**1.Activity的启动过程(不要回答生命周期) **
http://blog.csdn.net/luoshengyang/article/details/6689748
2.Activity的启动模式以及使用场景
(1)manifest设置,(2)startActivity flag
http://blog.csdn.net/CodeEmperor/article/details/50481726
此处延伸:栈(First In Last Out)与队列(First In First Out)的区别
**3.Service的两种启动方式 **
(1)startService(),(2)bindService()
http://www.jianshu.com/p/2fb6eb14fdec
4.Broadcast注册方式与区别
(1)静态注册(minifest),(2)动态注册
http://www.jianshu.com/p/ea5e233d9f43
此处延伸:什么情况下用动态注册
5.HttpClient与HttpUrlConnection的区别
http://blog.csdn.net/guolin_blog/article/details/12452307
此处延伸:Volley里用的哪种请求方式(2.3前HttpClient,2.3后HttpUrlConnection)
6.http与https的区别
http://blog.csdn.net/whatday/article/details/38147103
此处延伸:https的实现原理
7.手写算法(选择冒泡必须要会)
http://www.jianshu.com/p/ae97c3ceea8d
8.进程保活(不死进程)
http://www.jianshu.com/p/63aafe3c12af
此处延伸:进程的优先级是什么(下面这篇文章,都有说)
https://segmentfault.com/a/1190000006251859
9.进程间通信的方式
(1)AIDL,(2)广播,(3)Messenger
AIDL : https://www.jianshu.com/p/a8e43ad5d7d2
https://www.jianshu.com/p/0cca211df63c
Messenger : http://blog.csdn.net/lmj623565791/article/details/47017485
此处延伸:简述Binder , http://blog.csdn.net/luoshengyang/article/details/6618363/
10.加载大图
PS:有家小公司(规模写假的,给骗过去了),直接把项目给我看,让我说实现原理。。
最让我无语的一次面试,就一个点问的我底裤都快穿了,就差帮他们写代码了。。
http://blog.csdn.net/lmj623565791/article/details/49300989
11.三级缓存(各大图片框架都可以扯到这上面来)
(1)内存缓存,(2)本地缓存,(3)网络
内存:http://blog.csdn.net/guolin_blog/article/details/9526203
本地:http://blog.csdn.net/guolin_blog/article/details/28863651
12.MVP框架(必问)
http://blog.csdn.net/lmj623565791/article/details/46596109
此处延伸:手写mvp例子,与mvc之间的区别,mvp的优势
13.讲解一下Context
http://blog.csdn.net/lmj623565791/article/details/40481055
14.JNI
http://www.jianshu.com/p/aba734d5b5cd
此处延伸:项目中使用JNI的地方,如:核心逻辑,密钥,加密逻辑
15.java虚拟机和Dalvik虚拟机的区别
http://www.jianshu.com/p/923aebd31b65
16.线程sleep和wait有什么区别
http://blog.csdn.net/liuzhenwen/article/details/4202967
17.View,ViewGroup事件分发
http://blog.csdn.net/guolin_blog/article/details/9097463
http://blog.csdn.net/guolin_blog/article/details/9153747
18.保存Activity状态
onSaveInstanceState()
http://blog.csdn.net/yuzhiboyi/article/details/7677026
19.WebView与js交互(调用哪些API)
http://blog.csdn.net/cappuccinolau/article/details/8262821/
20.内存泄露检测,内存性能优化
http://blog.csdn.net/guolin_blog/article/details/42238627
这篇文章有四篇,很详细。
此处延伸:
(1)内存溢出(OOM)和内存泄露(对象无法被回收)的区别。
(2)引起内存泄露的原因
21.布局优化
http://blog.csdn.net/guolin_blog/article/details/43376527
22.自定义view和动画
以下两个讲解都讲得很透彻,这部分面试官多数不会问很深,要么就给你一个效果让你讲原理。
(1)http://www.gcssloop.com/customview/CustomViewIndex
(2)http://blog.csdn.net/yanbober/article/details/50577855
23.设计模式(单例,工厂,观察者。作用,使用场景)
一般说自己会的就ok,不要只记得名字就一轮嘴说出来,不然有你好受。
http://blog.csdn.net/jason0539/article/details/23297037/
此处延伸:Double Check的写法被要求写出来。
24.String,Stringbuffer,Stringbuilder 区别
http://blog.csdn.net/kingzone_2008/article/details/9220691
25.开源框架,为什么使用,与别的有什么区别
这个问题基本必问。在自己简历上写什么框架,他就会问什么。
如:Volley,面试官会问我Volley的实现原理,与okhttp和retrofit的区别。
开源框架很多,我就选几个多数公司都会用的出来(框架都是针对业务和性能,所以不一定出名的框架就有人用)
网络请求:Volley,okhttp,retrofit
异步:RxJava,AsyncTask
图片处理:Picasso,Glide
消息传递:EventBus
以上框架请自行查找,太多了就不贴出来了。
26.RecyclerView
这个挺搞笑的。有另外一个同事也在找工作,面试官嫌他没用过RecyclerView直接pass掉。
http://blog.csdn.net/lmj623565791/article/details/45059587
OK,点到即止。
最后
给大家送上我成功跳槽复习中所整理的资料,由于文章篇幅有限,所以只是把题目列出来了
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img-feYxYhjl-1715907086084)]
[外链图片转存中…(img-PvfyEe8g-1715907086084)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!