-
进程间通信的方式,aidl
-
Bundler原理
-
Handler机制
-
HandlerThread,IntentService,AsyncTask
-
点击事件分发机制
-
滑动冲突解决
-
广播注册方式,区别
-
有序无序广播,本地广播
-
服务的启动方式,区别,用途
-
数据提供者怎么用?原理?
-
布局是怎样加载的?有哪些方式
三、阿里
-
计算机网络HTTP协议
-
为什么是三次握手,四次挥手而不是两次,三次
-
TCP长连接,短连接区别
-
Socket的长连接你是怎么做的
-
数据库的三范式设计原则 , 索引怎么设计有什么影响
-
计算机系统内核态和用户态
-
Java基础:final,finally和finalize有什么区别
-
抽象类和接口的区别以及使用场景
-
java内存模型
-
String,StringBuilder,和StringBuffer的区别
-
HashMap实现源码,以及线程安全的Map
-
线程状态以及线程通信,线程锁
-
怎么保证线程安全
-
synchronized的监视器应该怎么设置
-
volatile关键字会做什么
android相关:
-
activity的生命周期分析(比如按下关机键会发生什么)
-
activity启动模式。每一种的应用场景
-
Service的两种启动方式,比较不同点
-
Binder的原理,为什么是内存拷贝一次,还知道哪些IPC方式
四、字节跳动
-
ThreadLocal实现原理,map中的key value是什么
-
static块中能否调用实例方法
-
concurrenthashmap中是如何实现线程安全的,concurrenthashmap读的时候不加锁,那如何保证读的一致性 (Node数组用volatile修饰)
-
HashMap外部加锁 与 使用concurrenthashmap时两者效率相比如何 (全表加锁 vs bucket加锁)
-
NIO中buffer中在传输文件时如何工作
-
P父类有两个子类A B,A先加载了D.class,B再加载D.class,加载完成后的class D是同一个class吗(可能是这个意思,问题我都没听明白)
-
如何创建一个注解
-
Executors中四个生成线程的实现类有什么特点,适用于什么场景
-
一个方法中有A a = new A();这么一条语句,方法执行完后A的实例化对象在GC时能否被回收掉
-
finalize相关,调用finalize一定会将对象销毁吗?finalize一定会仅执行一次吗?
-
synchronized中锁的几种状态
-
泛型的实现原理
手写代码(运气好,问的不难,几个都快速写出来了):
-
几种单例模式,区别
-
生产者消费者模型
-
二叉树中序遍历
经验总结
个人经验,这个要看你的就业目标是什么,一些企业,如果没有人不要好高骛远。
1 、中小型私企。 这类企业对于学历基本不看重,更多的是看你自己一个人能同时做多少人的事情,即你知识面的广度,因此,你不仅要会后端,还有会前端、界面设计、数据库、部署、硬件等一系列的技术,不需要每种技术学的很深,但是一定要一个人就能撑起一个项目的所有工作。面试时会更关注你都做过什么,是不是自己做的,因为当你进入企业后才发现,整个开发部门只有你一个人。。。
2 、互联网企业。 这类企业对学历的考量只占一小部分,更多的是看中个人能力,尤其是在某一个领域的深度,恰好和上一个相反。在面试时,着重考察你的算法能力、思考能力和配合能力,往往会出一些具体的事例让你给出解决方案。一旦你进入这类企业后,你会就某一个点进行深入。当然,如果你的学校足够好,你会发现面试你的是你的师兄,你的领导是你的师兄,你的领导的领导也是你的师兄。
3 、传统大型软件企业。 这类企业对于应届毕业生的学历是非常重要的评估环节,如果你的学历不够或者学校不好,非常大的可能是简历筛选这关就不能过,即便你的项目经验和个人能力超强。当然,如果你在其它企业已经有过多年的经验,你还是有很大可能通过简历筛选的。
44 、涉及部分软件开发的其它行业大型企业。 学历是这类企业衡量能力的唯一标准,因为他们的 HR 不知道除了学历还怎么能衡量你。
说了很多,对于学校不好的学生而言,这些年其实互联网行业已经宽容了很多,最起码会给一个机会,想起 10 年前的我,刚从本科学校毕业的时候,没有经验什么企业都不会要的悲惨。。。
但是,个人的奋斗和机遇是你成功的重要条件。
源码精编解析(部分展示)