程序员去大公司面试,小程序 FMP 优化实录,已拿 offer 入职
在开始回答前,先简单概括性地说说 Linux 现有的所有进程间 IPC 方式:
1. 管道:在创建时分配一个 page 大小的内存,缓存区大小比较有限;2. 消息队列:信息复制两次,额外的 CPU 消耗;不合适频繁或信息量大的通信;3. 共享内存:无须复制,共享缓冲区直接付附加到进程虚拟地址空间,速度快;但进程间的同步问题操作系统无法实现,必须各进程利用同步工具解决;4. 套接字:作为更通用的接口,传输效率低,主要用于不通机器或跨网络的通信;5. 信号量:常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。6. 信号: 不适用于信息交换,更适用于进程中断控制,比如非法内存访问,杀死某个进程等;
Android 的内核也是基于 Linux 内核,为何不直接采用 Linux 现有的进程 IPC 方案呢,难道 Linux 社区那么多优秀人员都没有考虑到有 Binder 这样一个更优秀的方案,是 google 太过于牛 B 吗?事实是真相并非如此,请细细往下看,您就明白了。
Java 基础
Java Object 类方法
HashMap 原理,Hash 冲突,并发集合,线程安全集合及实现原理
HashMap 和 HashTable 区别
HashCode 作用,如何重载 hashCode 方法
ArrayList 与 LinkList 区别与联系
GC 机制
Java 反射机制,Java 代理模式
Java 泛型
Synchronized 原理
Volatile 实现原理
方法锁、对象锁、类锁的意义和区别
线程同步的方法:Synchronized、lock、reentrantLock 分析
Java 锁的种类: 公平锁、乐观锁、互斥锁、分段锁、偏向锁、自旋锁等
ThreadLocal 的原理和用法
ThreadPool 的用法和示例
wait()和 sleep()的区别
Java 高阶
Java 虚拟机,Java 运行,Java GC 机制(可达性分析法,引用计数法)
Java 对象的完整生命周期
JVM 内存模型
进程间通信,线程间通信
JVM 类加载机制
Java 引用类型
设计模式:除常用设计模式之外,特别的,反射机制,代理模式
HTTP 协议和 HTTPS 协议
Socket 协议,Socket 实现长连接
TCP 和 UDP 协议
HTTP 协议中 GET 和 POST 的具体实现
序列化和反序列化
线程池的实现原理
数据库基础知识:多表查询、索引、数据库事务
数据结构及算法
数据结构
栈和队列
数组和链表,自定义一个动态数组
Hash 表,及 Hash 冲突的解决
二叉树
B+ B-树
基础排序算法:重点 快排、归并排序、堆排序(大根堆、小根堆)
快排的优化
二分查找与变种二分查找
哈夫曼树、红黑树
字符串操作,字符串查找,KMP 算法
图的 BFS、DFS、prim、Dijkstra 算法(高阶技能)
经典问题:海量数据的处理 (10 亿个数中找出最大的 10000 个数 TOP K 问题)
算法
分治算法
动态规划
贪心算法
分支限界法
Android 基础
Application 生命周期
Android Activity 生命周期
Android Service、IntentService,Service 和组件间通信
Activity 的 onNewIntent
Fragment 的懒加载实现,参数传递与保存
ContentProvider 实例详解
BroadcastReceiver 使用总结
Android 消息机制
Binder 机制,共享内存实现原理
Android 事件分发机制
Android 多线程的实现:Thread、HandlerThread、AsyncTask、IntentService、RxJava
ActivityThread 工作原理
嵌套滑动实现原理
RecyclerView 与 ListView(缓存原理,区别联系,优缺点)
View 的绘制原理,自定义 View,自定义 ViewGroup
View、SurfaceView 与 TextureView
主线程 Looper.loop 为什么不会造成死循环
ViewPager 的缓存实现
requestLayout,invalidate,postInvalidate 区别与联系
AndroidP 新特性
Android 两种虚拟机
ADB 常用命令
Asset 目录与 res 目录的区别
Android SQLite 的使用入门
最后
想要了解更多关于大厂面试的同学可以点击这里免费获取《面试文档》除此之外,我也分享一些免费的优质资源,包括:Android 学习 PDF+架构视频+源码笔记,高级架构技术进阶脑图、Android 开发面试专题资料,高级进阶架构资料 这几块的内容。分享给大家,非常适合近期有面试和想在技术道路上继续精进的朋友。快来获取学习资料吧~
评论