最近几个月一直在找工作,今年找工作是真的难。下面的是我这段时间找工作面试过程中被问到的一些问题,希望能对你有所帮助。
Java
基础
- 什么是面向对象?面向对象的三大特征是什么?
- String、StringBuilder、StringBuffer 的区别?String 为什么是不可变的?
- Java 中的 String 常量池相关的问题。
- Integer 缓存的相关问题。
- 什么是浅拷贝、什么是深拷贝,深拷贝有哪些实现方式。
- 二进制的运算必须要掌握。
进阶
JVM
- JVM 内存分区有哪些?
- 堆和栈的区别是什么?
- 垃圾回收器算法有哪些?
- Java 中如何判断一个对象是否需要被回收?
- Java 中的垃圾收集器有哪些?
- 一个 Object 在内存中占多少字节?
- 什么是 OutofMemoryError,什么情况下会发生 OOM。
- JVM 的类加载的双亲委派是什么?
集合
- ArrayList 和 LinkedList 有什么区别?
- ArrayList 扩容相关的问题。
- HashMap 的实现原理是什么?(这里可能会被问到数据结构与算法中解决 hash 冲突有哪些方式。)
- HashMap 扩容相关。(被问过 HashMap 的默认的负载因子是多少)HashMap 的容量为什么要是
。
- 为什么重新 equals 方法时要重写 hashCode 方法。
并发
- 保证线程安全的方式有哪些?
- synchronized 和 voliate 是什么?实现原理是什么?
- synchronized 和 ReentraintLook 的实现原理有什么不同?这两种锁有什么区别?
- 乐观锁和悲观锁是什么?
- CAS 是什么?Java 中 CAS 是如何解决 ABA 的问题的。
- 线程池是什么?线程池有什么优点?线程池的实现原理是什么?
- 你知道 JUC 下提供了哪些用于并发的工具类。
- AtomicInteger 的实现原理。
- ConcurrentHashMap 是如何保证线程安全的。
- Java 中有什么并发安全的集合?
- CountDownLatch、CyclicBarrier 和 Semaphore 必须要会使用,原理也不复杂,最好能掌握。
- 一些并发相关的手撕题。比如生产者、消费者;比如两个线程,必须一前一后执行。
Kotlin
- Kotlin internal 关键字的作用是什么?
- Kotlin 中内联函数的实现原理是什么?
- Kotlin 中扩展函数的实现原理是什么?
- Kotlin 中 lateinit 关键字的作用是什么?
- Kotlin 中协程是什么?实现原理是什么?(扩展到线程和进程)
- Kotlin 相比 Java 有什么优缺点。
- Kotlin 的委托机制。
- Kotlin 中的 Map 和 java 中的 Map 有什么区别?
Kotlin 面试时问的问题还是相对偏少。
操作系统
- 进程、线程、协程是什么?有什么区别?
- 什么是死锁?死锁有什么检测或者解决的办法吗?死锁的四个必要条件是什么?能写一段代码来演示一下死锁吗?
- 僵尸进程和孤儿进程是什么?
- 进程间通信的机制有哪些?
计算机网络
-
什么是 HTTP 协议?
- HTTP 协议常见的响应状态码有哪些?
- HTTP 各版本不同的版本之间有什么区别(或者说新加了哪些功能)?
-
HTTPS 和 HTTP 有什么区别?HTTPS 中的 S 代表什么?
- HTTPS 握手的过程。
- 这里补充一个常见的加解密算法有哪些?
- 证书链,证书的验证过程。
-
抓包的原理是什么?Charles 抓包的原理是什么?
-
什么是 TCP 协议?TCP 协议是如何保证传输的可靠性的?
-
TCP 和 UDP 的区别是什么?
-
什么是 DNS 协议?获取 DNS 的过程是什么?
设计模式
- 你用过哪些设计模式?
- 单例设计模式。什么是双重检测?双重检测的单例中为什么要使用 volatile。
- 观察者模式。
- 六大设计原则。
- 工厂模式。
- 代理模式。
- 适配器模式。
- 装饰模式。
- ...
Android
基础
-
能说说 Android 中的 Handler 机制吗?(最好能深入 native 层)
- Handler 中什么是同步屏障、什么是异步消息?
- IdleHandler 是什么?有什么作用?
- HandlerThread 是什么?
- Handler 中为什么要使用 epoll?
-
Binder 是什么?AIDL 是什么?
-
View 的绘制流程是什么?(最好能回答的全面一些)invalidate 和 requestLayout 的区别是什么?
-
自定义 View 流程有哪些?
-
能讲讲触摸事件的分发流程吗?(有可能会问 framework 层)这里可能会出一些场景,让你说一下事件是怎么分发的。
-
Activity 的四种启动模式是什么?分别有哪些使用场景?
-
Activity 的生命周期有哪些?屏幕旋转后的生命周期变化是什么?
-
能讲讲从 Launcher 启动 Activity 的流程吗?
-
Broadcast 是什么?广播有哪些分类?广播注册方式有几种?为什么要有本地广播?本地广播的实现原理是什么?
-
Service 是什么?Service 有哪几种模式?IntentService 是什么?
-
ContentProvider 是什么?
-
Android 创建线程有哪几种方式?多线程应用和单线程应用的 Application 有什么区别?
-
MVC、MVP、MVVM、MVI 的区别是什么?
-
ANR 是什么?ANR 的场景有哪些?在这些场景下多少秒无响应会 ANR?
-
Android 中有哪几种动画,原理分别是什么?
-
Activity 的 Context 和 Aplication 的 Context 有什么区别?
-
App 的打包流程是什么?
-
什么是内存泄露?内存泄露的场景有哪些?内存泄露要怎么解决?怎么检测内测泄露?
-
组件化相关的一些问题,这个会结合项目问。
-
Bitmap 加载一个图片,内存占用的大小和哪些因素有关?
Jetpack
- 你使用过哪些 Jetpack 的组件?
- Lifecycle 实现原理是什么?
- ViewModel 实现原理是什么?
- LiveData 的实现原理是什么?LiveData 中的版本号的作用是什么?LiveData 有什么不足以及如何解决?Google 为什么现在推荐使用 Flow?
- 为什么屏障方向切换后,ViewModel 中的数据还在?
框架
- Retrofit 的实现原理。
- OKHTTP 原理。
- Fresco 和 Glide 的优缺点。
设计题
- 启动任务的框架设计。
- 下拉刷新要怎么设计实现。
- ...
设计题千奇百怪,面试官可能会根据一些实际情况来出题。











网友评论