前言
这篇文章主要是分享今年上半年的面试心得,现已就职于某大厂有三个月了,近期有很多公司均已启动秋招,也祝大家在 2020 的下半年面试顺利,获得理想的offer!
之前找工作的那段时间感想颇多,总结一点面试经验和人生思考分享给大家。
java方面
- 基本知识点 集合类的区别和适用场景 1次 java静态内部类和非静态内部类的区别 内存分配 创建过程 内存泄漏问题? 如何保证线程安全? 多次 (面试必问) 哪几种加锁方式(最好扯到monitor) 乐观锁和悲观锁 (适用场景) 锁的适用场景 线程池的概念 构成 适用场景 为什么要用线程池(扯到线程分配资源的过程,和进程分配资源过程的区别)
- 内核方面(面试必问) GC垃圾回收机制 n次 GC是怎么找要清除的对象的? java的四种引用和适用场景 GC内核清理用什么算法? 新生代复制清理,老生代标记整理 拓展:老生代标记整理如何有效的整理内存碎片? java内存结构 n次 java的内存是怎么分布的 java类的加载机制 java对象的加载机制 常量池 string对象的生成 Integer的缓存机制
计算机网络
- 网络层级结构以及对应的协议
- TCP TCP 三次握手(第一次和第三次如果没收到回应会怎样?) TCP四次挥手 拥塞控制没考过?
- HTTP HTTP报文,http各版本的区别,https
- IP 为啥不将mac作为ip地址 ping实现原理 ttl生存字段
- ARP 描述过程,广播单播
操作系统
- 线程和进程区别(资源分配上是怎样的)
- 进程通信
- 内存空间分配
- 死锁 产生死锁的条件(详细举例) 避免死锁的方法
设计模式
- 一般是自己说了解哪些模式,一定要说明适用场景
- 单例模式 懒汉式 饿汉式 线程安全,双重锁
- 观察者模式
- 适配器模式
- 外观模式
android方面(一般是根据项目问)
- android的进程通信
- service服务
- handlerThread
- handler运行机制 1次
- recyclerView缓存机制 1次
- view的重绘
项目方面
- fragment和activity交互
- webview的使用 安全问题? 和js互相调用
- 断点续传 描述过程 文件读写,怎么保证不冲突
- asynctask内存泄漏 为什么泄漏 解决方法 调试工具是什么
- MFCC流程 录音环节(快手问了一大堆细节,还让写伪代码)
- MVP
- recyclerView 和listview区别 缓存机制 item太多会内存泄漏吗
总结
这次面试问的还是还是有难度的,要求当场写代码并且运行,也是很考察面试者写代码
因为Android知识体系比较庞大和复杂的,涉及到计算机知识领域的方方面面。在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。
附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…