最后
面试是跳槽涨薪最直接有效的方式,马上金九银十来了,各位做好面试造飞机,工作拧螺丝的准备了吗?
掌握了这些知识点,面试时在候选人中又可以夺目不少,暴击9999点。机会都是留给有准备的人,只有充足的准备,才可能让自己可以在候选人中脱颖而出。
=============
-
开启线程的三种方式?
-
线程和进程的区别?
-
为什么要有线程,而不是仅仅用进程?
-
run()和 start()方法区别
-
如何控制某个方法允许并发访问线程的个数?
-
在 Java 中 wait 和 seelp 方法的不同;
-
谈谈 wait/notify 关键字的理解
-
什么导致线程阻塞?
-
线程如何关闭?
-
讲一下 Java 中的同步的方法
-
数据一致性如何保证?
-
如何保证线程安全?
-
如何实现线程同步?
-
两个进程同时要求写或者读,能不能实现?如何防止进程的同步?
-
线程间操作 List
-
Java 中对象的生命周期
-
Synchronized 用法
-
synchronize 的原理
-
谈谈对 Synchronized 关键字,类锁,方法锁,重入锁的理解
-
static synchronized 方法的多线程访问和作用
-
同一个类里面两个 synchronized 方法,两个线程同时访问的问题
-
volatile 的原理
-
谈谈 volatile 关键字的用法
-
谈谈 volatile 关键字的作用
-
谈谈 NIO 的理解
-
synchronized 和 volatile 关键字的区别
-
synchronized 与 Lock 的区别
-
ReentrantLock 、synchronized 和 volatile 比较
-
ReentrantLock 的内部实现
-
lock 原理
-
死锁的四个必要条件?
-
怎么避免死锁?
-
对象锁和类锁是否会互相影响?
-
什么是线程池,如何使用?
-
Java 的并发、多线程、线程模型
-
谈谈对多线程的理解
-
多线程有什么要注意的问题?
-
谈谈你对并发编程的理解并举例说明
-
谈谈你对多线程同步机制的理解?
-
如何保证多线程读写文件的安全?
-
多线程断点续传原理
-
断点续传的实现
5、并发编程有关知识点
===========
学习的参考资料如下:
-
Java 内存模型
-
Java 线程安全总结
-
深入理解 java 内存模型系列文章
-
线程状态:
-
一张图让你看懂 JAVA 线程间的状态转换
-
锁机制:synchronized、Lock、Condition
-
Java 中的锁
-
并发编程:
-
Java 并发编程:Thread 类的使用
-
Java 多线程编程总结
-
Java 并发编程的总结与思考
-
Java 并发编程实战—–synchronized
-
深入分析 ConcurrentHashMap
6、架构设计和设计模式
===========
-
谈谈你对 Android 设计模式的理解
-
MVC MVP MVVM 原理和区别
-
你所知道的设计模式有哪些?
-
项目中常用的设计模式
-
手写生产者/消费者模式
-
写出观察者模式的代码
-
适配器模式,装饰者模式,外观模式的异同?
-
用到的一些开源框架,介绍一个看过源码的,内部实现过程。
-
谈谈对 RxJava 的理解
-
RxJava 的功能与原理实现
-
RxJava 的作用,与平时使用的异步操作来比的优缺点
-
说说 EventBus 作用,实现方式,代替 EventBus 的方式
-
从 0 设计一款 App 整体架构,如何去做?
-
说一款你认为当前比较火的应用并设计(比如:直播 APP,P2P 金融,小视频等)
-
谈谈对 java 状态机理解
-
Fragment 如果在 Adapter 中使用应该如何解耦?
-
Binder 机制及底层实现
-
对于应用更新这块是如何做的?(解答:灰度,强制更新,分区域更新)?
-
实现一个 Json 解析器(可以通过正则提高速度)
-
统计启动时长,标准
7、性能优化
======
-
如何对 Android 应用进行性能分析以及优化?
-
ddms 和 traceView
-
性能优化如何分析 systrace?
-
用 IDE 如何分析内存泄漏?
-
Java 多线程引发的性能问题,怎么解决?
-
启动页白屏及黑屏解决?
-
启动太慢怎么解决?
-
怎么保证应用启动不卡顿?
-
App 启动崩溃异常捕捉
-
自定义 View 注意事项
-
现在下载速度很慢,试从网络协议的角度分析原因,并优化(提示:网络的 5 层都可以涉及)。
-
Https 请求慢的解决办法(提示:DNS,携带数据,直接访问 IP)
-
如何保持应用的稳定性
-
RecyclerView 和 ListView 的性能对比
-
ListView 的优化
-
RecycleView 优化
-
View 渲染
-
Bitmap 如何处理大图,如一张 30M 的大图,如何预防 OOM
-
java 中的四种引用的区别以及使用场景
-
强引用置为 null,会不会被回收?
8、NDK、jni、Binder、AIDL、进程通信有关
============================
-
请介绍一下 NDK
-
什么是 NDK 库?
-
jni 用过吗?
-
如何在 jni 中注册 native 函数,有几种注册方式?
-
Java 如何调用 c、c++语言?
-
jni 如何调用 Java 层代码?
-
进程间通信的方式?
-
Binder 机制
-
简述 IPC?
-
什么是 AIDL?
-
AIDL 解决了什么问题?
-
AIDL 如何使用?
-
Android 上的 Inter-Process-Communication 跨进程通信时如何工作的?
-
多进程场景遇见过么?
-
Android 进程分类?
-
进程和 Application 的生命周期?
-
进程调度
-
谈谈对进程共享和线程安全的认识
-
谈谈对多进程开发的理解以及多进程应用场景
-
什么是协程?
9、framework 层、ROM 定制、Ubuntu、Linux 之类的问题
=======================================
-
Java 虚拟机的特性
-
谈谈对 jvm 的理解
-
JVM 内存区域,开线程影响哪块内存
-
对 Dalvik、ART 虚拟机有什么了解?
-
Art 和 Dalvik 对比
-
虚拟机原理,如何自己设计一个虚拟机(内存管理,类加载,双亲委派)
-
谈谈你对双亲委派模型理解
-
JVM 内存模型,内存区域
-
类加载机制
-
谈谈对 ClassLoader(类加载器)的理解
-
谈谈对动态加载(OSGI)的理解
-
内存对象的循环引用及避免
-
内存回收机制、GC 回收策略、GC 原理时机以及 GC 对象
-
垃圾回收机制与调用 System.gc()区别
-
Ubuntu 编译安卓系统
-
系统启动流程是什么?(提示:Zygote 进程 –> SystemServer 进程 –> 各种系统服务 –> 应用进程)
-
大体说清一个应用程序安装到手机上时发生了什么
-
简述 Activity 启动全部过程
-
App 启动流程,从点击桌面开始
-
逻辑地址与物理地址,为什么使用逻辑地址?
-
Android 为每个应用程序分配的内存大小是多少?
-
Android 中进程内存的分配,能不能自己分配定额内存?
-
进程保活的方式
-
如何保证一个后台服务不被杀死?(相同问题:如何保证 service 在后台不被 kill?)比较省电的方式是什么?
-
App 中唤醒其他进程的实现方式
二、非技术性问题 &HR 问题汇总
=================
这里整理的是一些与技术没有直接关系的面试题,但是能够考察你的综合水平,所以不要以为不是技术问题,就不看,往往有时候就是这样一些细节的题目被忽视,而错过了一次次面试机会。
(一)非技术问题
介绍你做过的哪些项目
都使用过哪些框架、平台?
都使用过哪些自定义控件?
研究比较深入的领域有哪些?
对业内信息的关注渠道有哪些?
最近都读哪些书?
有没有什么开源项目?
自己最擅长的技术点,最感兴趣的技术领域和技术点
项目中用了哪些开源库,如何避免因为引入开源库而导致的安全性和稳定性问题
实习过程中做了什么,有什么产出?
(二)HR 提出的面试问题
您在前一家公司的离职原因是什么?
讲一件你印象最深的一件事情
介绍一个你影响最深的项目
介绍你最档案热爱最擅长的专业领域
公司实习最大的收获的英文什么?
与上级意见不一致时,你将怎么办?
自己的优点和缺点是什么?并举例说明?
最后
终极手撕架构师的学习笔记:分布式+微服务+开源框架+性能优化
些项目
都使用过哪些框架、平台?
都使用过哪些自定义控件?
研究比较深入的领域有哪些?
对业内信息的关注渠道有哪些?
最近都读哪些书?
有没有什么开源项目?
自己最擅长的技术点,最感兴趣的技术领域和技术点
项目中用了哪些开源库,如何避免因为引入开源库而导致的安全性和稳定性问题
实习过程中做了什么,有什么产出?
(二)HR 提出的面试问题
您在前一家公司的离职原因是什么?
讲一件你印象最深的一件事情
介绍一个你影响最深的项目
介绍你最档案热爱最擅长的专业领域
公司实习最大的收获的英文什么?
与上级意见不一致时,你将怎么办?
自己的优点和缺点是什么?并举例说明?
最后
终极手撕架构师的学习笔记:分布式+微服务+开源框架+性能优化
[外链图片转存中…(img-qdJ5PWNt-1715695792591)]