(一)几个重要的知识点:
1.一篇文章了解相见恨晚的 Android Binder 进程间通讯机制
https://blog.csdn.net/freekiteyu/article/details/70082302
2.linux设备驱动uevent详解,高通平台battery上报电量实例
https://blog.csdn.net/radianceblau/article/details/78023575
3.Linux DTS(Device Tree Source)设备树详解之一(背景基础知)
https://blog.csdn.net/radianceblau/article/details/70800076
4.linux驱动由浅入深系列:显示子系统之二(基于android的分析)
https://blog.csdn.net/radianceblau/article/details/79437615
5.【android】解析dump的几种方式
http://www.suoniao.com/article/40552
6.一文带你分分钟掌握ARM前世今生及相关技术,带你拨开云雾见天空
https://www.jianshu.com/p/e51de46ac820
7.Trace32 加载MTK平台 SYS_MINI_RDUMP
https://blog.csdn.net/forever_2015/article/details/70185709
8.module_init解析及内核initcall的初始化顺序
https://www.cnblogs.com/chaozhu/p/6410271.html
9.NDK、jni、Binder、AIDL、进程通信有关问题:
https://blog.csdn.net/fajuary/article/details/79750879
10.几个问题
1)请介绍一下NDK
2)什么是NDK库?
3)jni用过吗?
4)如何在jni中注册native函数,有几种注册方式?
5)Java 如何调用c、c++语言?
6)jni如何调用java 层代码
7)进程间通信的方式
8)Binder机制
9)简述IPC? https://blog.csdn.net/a471893438/article/details/51878919
10)什么是AIDL?
11)AIDL解决了什么问题?
12)AIDL如何使用?
13)Android上的Inter-Process-Communication跨进程通信时是如何工作的?
14)多进程场景遇见过吗?
15)Android进程分类?
16)进程和Application的生命周期?
17)进程调度
18)谈谈对进程共享和线程安全的认识
19)谈谈对多进程开发的理解以及多进程应用场景
20)什么是协程?
11.IPC、Binder、AIDL与Intent之间区别与联系
https://blog.csdn.net/jinxinliu1/article/details/70174591
12.Android应用层View绘制流程与源码分析
https://blog.csdn.net/yanbober/article/details/46128379
13.源码分析篇
Android绘制流程(一)窗口启动流程分析
https://www.cnblogs.com/tiger-wang-ms/p/6517048.html
http://www.cnblogs.com/tiger-wang-ms/
14.Android 四大组件
15.Linux进程 管理 和内存管理
16.Android的 lmk(low memory kill )
https://blog.csdn.net/u011733869/article/details/78820240
17.MTK android 下载及启动过程
https://www.cnblogs.com/chyl411/p/3573047.html
18.linux驱动由浅入深系列:PBL-SBL1-(bootloader)LK-Android启动过程详解之一(高通MSM8953启动实例)
https://blog.csdn.net/radianceblau/article/details/73229005
19.linux内核panic/oops/crash分析(addr2line,objdump,gdb)
https://blog.csdn.net/radianceblau/article/details/78687870
20.内存管理分析之一:Linux进程空间与虚拟地址的好处
内存管理分析之二:MMU机制在进程中使用时的一些问题
内存管理分析之三:了解这些概念就了解了整个MMU机制
https://blog.csdn.net/radianceblau/article/details/73655625
------------------------------------------------------------------------
(二)面试问题
1.kalloc与valloc的区别
2.何时使用多进程和多线程
3.socket连接
4.典型的存储安排
5.kernel打印log的方式
6.堆栈的区别
7.jni注册
8.android启动过程
9.自旋锁与互斥锁区别
----------------------------------------
1.const成员函数
2.const string & fun(const string &s){ string ret=s; return ret;}
3.智能指针
4.LRU
5.查询CPU的shell命令
6.预编译,编译,汇编,链接
------------------------------------------------
1.debug和release的区别
2.delete [] a;不加[]可不可以。挨个删除可以吗?以及free()大小如何传递的。free/delete 怎么知道有多少内存要释放 ?
3.new 和malloc的区别
4.何时用vector和list
5.大数相乘
--------------------------------------------------------------------------
1.头文件作用是声明,不是定义
2.头文件的顺序对链接的影响
3.模板的声明和定义放在头文件中,为什么?
https://blog.csdn.net/lichengyu/article/details/6792135
4.网络编程send何时阻塞或者不阻塞返回错误
5.网络编程send成功是发送到哪了
6.网络编程客户端关闭了还能继续发送吗?
7.查看进程调用栈的命令
8.查看磁盘带宽命令 https://www.cnblogs.com/yuanxiang/archive/2012/05/30/2525931.html
9.vmstat free iptraf iostat
https://www.cnblogs.com/yuanxiang/archive/2012/05/30/2525931.html
10.虚函数表的是在哪个阶段建立的
https://www.cnblogs.com/xiehongfeng100/p/4678892.html