写点什么

程序员去大公司面试,小程序 FMP 优化实录,已拿 offer 入职

发布于: 2021 年 03 月 25 日

在开始回答前,先简单概括性地说说 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 开发面试专题资料,高级进阶架构资料 这几块的内容。分享给大家,非常适合近期有面试和想在技术道路上继续精进的朋友。快来获取学习资料吧~


用户头像

VX公众号:编程进阶路 2020.11.28 加入

还未添加个人简介

评论

发布
暂无评论
程序员去大公司面试,小程序FMP优化实录,已拿offer入职