2020新鲜Java,Android面经

总结的2020年Java面试经验,含后端开发和客户端开发岗位。加粗部分为常问知识点。

面经总结

  • Java部分
    • 基础
    • 集合
    • 多线程
    • JVM
    • 计算机网络
    • 操作系统
    • 算法
  • Android部分

Java部分

基础

Eques方法和==的区别
常见的设计模式
静态内部类和双重检验两种单例模式的差别
设计模式7大原则
23个设计模式(说说经常使用的有哪些)
手写一个生产者消费者
抽象类和接口
泛型
Java的泛型原理,泛型能不能动态获取类型,泛型擦除
Java三大特性
Java多态的实现机制
面向对象的理解
封装是怎么样的
什么是面向过程 & 什么是面向对象 & 区别?
static关键字
静态的String存哪
java静态内部类和非静态内部类的区别
静态属性和静态方法能被继承吗?静态方法又是否能被重写呢
父类的静态代码块,非静态代码块 和子类的静态代码块,非静态代码块初始化顺序
Java反射和原理
Return 和finally方法
int i = 4;i存哪
创建对象的方式(new,clone,反射,反序列化)
如果读取一个txt文本文件乱码了,你觉得原因是什么
String赋值呢
Java中的深拷贝和浅拷贝
Object类有哪些方法
父类的private方法,子类重写了,调用到谁的方法
RxJava处理异常
RxJava的flatMap操作符
接口需要加abstract嘛
enum
JDK & JVM & JRE分别是什么以及它们的区别?
谈谈你对this和super的认识。
final关键字的作用
C++和JAVA的区别,java支持多继承吗
基本类型的初始化值为多少?引用类型的初始值为多少
能说说多维数组在内存上是怎么存储的吗?
Error和Exception的区别
给我例举至少5个常见的运行时异常

集合

数组和链表的区别
ArrayList底层
HashMap的原理(底层)

HashMap读取时间复杂(对于指定下标O(1) ) 通过给定值(O(n)) 需要遍历整个数组
Hash原理(冲突检测)
在java中怎么解决hash冲突,HashMap的put过程,HashMap为什么要扩容,Hash算法,HashMap在java8版本之后有个红黑树的概念(完全?平衡?),HashMap的线程安全问题
LinkedList和ArrayList的区别和选择
HashMap、HashTable、ConcurrentHashMap

数组和链表往末尾添加一个数据 谁效率高

多线程

Synchronized
和Reentrantlock的区别
你觉得Lock和Synchronized的区别是什么
Synchronized的锁升级
synchronized和volatile
volatile
死锁
产生条件和处理方式,写一个死锁,如何避免死锁,操作系统死锁的产生条件和处理方式
线程池
作用,项目中有用到多线程吗?
构成
适用场景
为什么要用线程池(扯到线程分配资源的过程,和进程分配资源过程的区别)
线程状态
进程和线程区别

创建线程的方式
线程安全
java线程同步

java中有哪些实现同步方法
如何保证线程安全? (面试必问)
线程等待技术(同步机制)

哪几种加锁方式(最好扯到monitor)
乐观锁和悲观锁 (适用场景)
锁的适用场景
原子性和可见性
公平锁和非公平锁的区别
了解的锁的种类
进程的内存成分和作用
ThreadLocal

JVM

四大引用
java的四种引用和适用场景
JVM类加载机制
JVM内存分区(内存模型)
java的内存是怎么分布的
存了什么
OOM,栈溢出,你怎么写个程序让栈溢出
内存分配
创建过程
JVM垃圾回收(GC过程)
gcRoot有哪些?
GC垃圾回收机制 n次
GC是怎么找要清除的对象的?
GC内核清理用什么算法?
新生代复制清理,老生代标记整理
拓展:老生代标记整理如何有效的整理内存碎片?
内存泄漏
内存泄漏和内存抖动
了解CPU的时间片状态嘛?
Java里创建对象 ,jvm会做什么事情
可达性分析
类实例化过程
双亲委派和为什么这么做
java类的加载机制
java对象的加载机制
常量池
string对象的生成
Integer的缓存机制

计算机网络

网络协议
(五层协议,OSI七层)
计算机网络共有几层?
TCP和UDP
视频面试的话应该采用udp还是tcp
TCP为什么可靠
如果 视频上传失败的话,服务器返回什么
TCP的拥塞控制
怎么提高服务器接口的健壮性(登陆才能使用)
登陆一般是如何实现
如果你设计token,会怎么设计
TCP和HTTP的关系
TCP三次握手四次挥手
http和https区别

https加密算法,对称加密和非对称加密的区别,常用对称加密有哪些,HTTPS为什么安全,HTTPS可以抓包吗,怎么验证https的证书的合法性,HTTP工作原理,HTTP端口,http状态码有哪些,301和302有什么区别,怎么防止访问被拦截(https)
HTTP
HTTP报文,http各版本的区别,https
IP
用过加密嘛(加密算法)
GET和POST的区别

网站从打开www.163.com到页面显示的过程
为什么要有端口
流量控制和拥塞控制
网络层级结构以及对应的协议
拥塞控制没考过?
为啥不将mac作为ip地址
ping实现原理
ttl生存字段
ARP
描述过程,广播单播

操作系统

MySQL 级联删除 多表查询
进程通信
分页分段
虚拟内存
进程间怎么通信
线程间怎么通信
线程和进程区别(资源分配上是怎样的)
进程通信
内存空间分配

算法

排序算法
讲快排思路,手写快排
快排时间复杂度(O(nlogn))
查找算法(二分查找)

了解查找算法吗?讲了二分查找,二分查找时间复杂度O(log2n)
反转链表
找数组中第一个只出现一次的数
通过先序和中序数组生成后序数组
算法: LeetCode原题 最小差
把一个完全有序的序列排序时间代价最小的是哪种?(插入排序
算法题:字符串根据字典分割的问题。一开始给的解决方法时间复杂度太高,一直要求优化。
算法:一个有序数组找到2个值加起来为target LeetCode 第一题
//有char型数组words,由空格以及字母组成。 我们定义被空格隔离开的字符序列为一个单词。现需要对其处理,把连续的空格换成一个空格,把单词的首字母大写。
要求:1. 在原有数组上操作,不得开辟新的数组空间。 2. 性能也要考虑优化。
//void processWords(char[] words)
一个整数,打印二进制多少个1 。说思路不用写(说了2种,问还有嘛,最后说了3种,问 还有吗 没了….)
17.算法题:N亿个数,找出里面不重复的数,分配的内存很有限
N多个数,找出里面重复最多的数
字符串反转。说思路不用写(说了3种 )
手撕代码:有序数组合并
算法:一个有序数组,寻找k值出现的第一个位置
最坏情况100个数不排序,怎么找到中位数,内存只能装10个数
反转链表两个链表相交,怎么找到那个相交点
一大段文章,怎么找到想要的字符串 kmp算法
红黑树的查找复杂度
算法:
统计使用数 TOP 1 的标签。
现有数据:[{tagName: ‘p’}, {tagName: ‘div’}, {tagName: ‘p’}, …],
请统计出现次数 TOP 1 的 tagName。

Android部分

四大组件
Fragment

生命周期,Fragment和Activity的区别,activity与fragment交互,如何互传数据
Activity
活动启动模式
Android的生命周期(从创建到销毁经历的生命周期函数)
在Android中两个Activity通过什么传递数据(传递对象先序列化)
生命周期,Activity和Activity之间通信方式,activity启动过程?Activity A跳转到Activity B ,B再传递消息给ActivityA 用什么,
看了一个题,分析返回栈中的activity,你是如何获取当前的生命状态?哪些情况下会执行onStop()方法?
如何在任意位置关掉应用所有Activity & 如何在任意位置关掉指定的Activity
SingleTask和SingleInstance区别
activityManagerService知道么?
Service
服务的两种启动方式
事件分发机制
说说怎么处理滑动冲突
Handler消息处理机制
Looper怎么确定消息发给谁处理,handler的postDelay时间精确吗,要再子线程使用Handler要怎么实现
数据库
项目中的数据库
数据库数据多的时候应该怎么提升查询效率
怎么创建索引
除了数据库,有没有了解其他存储数据的方式
SQLite 版本更新
存储数据还有其他存储方式?区别?如果应用卸载哪些会消失
SP 的存储格式
当存储量很大的时候有什么问题
sp和sqlite区别
View的绘制流程和方法
自定义View的方法
Android中的动画分为哪些种类 & 特点 & 缺点。
安卓里的动画
有在canvas的绘制过吗
内存泄漏
OOM遇见过嘛
原因,如何解决
如何检测内存泄露,有什么方式,有什么OOM、内存泄漏说一下(对象生命周期结束未回收,webView没有及时销毁)、(context被其他实例持有如handler,消息队列、游标IO未及时close、广播接收器没有及时注销、bitmap存大图)
序列化
序列化有用过没,Android中序列化方式(Parcelable,Serialable)
RecyclerView和ListView
ListView为什么要有ViewHolder(使用ViewHolder可以避免重复地调用findViewById),ListView优化滑动速度,RecyclerView 与ListView的区别,RecyclerView 数据更新部分,Recyclerview内部如果多type,多item怎么设计实现避免这么多判断呢,RecyclerView 横屏滑动和竖屏滑动怎么实现,recycleView说下,相对于listView有哪些优点?列表页可以用什么实现(ListView、RecyclerView)
ListView与LinearLayout区别:ListView对item做了缓存。
性能优化
热修复了解吗?
插件化了解吗?
安卓性能优化有哪些?
如何判定不同的item类型?(有一个itemType变量可以判断)。
一个ListView有100个item,怎么确定ListView的高度。
框架
eventBus框架说下
用过哪些第三方开源框架(OkHttp、Glide).
Gradle了解不?
架构用的是什么:说了一下MVC、MVP、MVVM。自己的项目是mvc。可以改进为MVVM。
Flutter
用过什么第三方库?
多线程
怎么实现线程间通信的(消息队列是个共享变量)
Android中创建线程的方式
图片
用过什么网络库和图片库(Picasso,Glide,okhttp),
怎么让图片占的空间变小
图片框架的缓存和内存复用,Picasso和Glide区别,
加载大图OOM怎么处理
加载过程
图片过大怎么处理
如果做一个看图软件,应该如何设计
其他
Android中播放视频音频的方式有哪些
touchSlop,touchDelegate的理解
viewStub,merge、include的理解
webview用过没
dp与dpi区别,怎么把dp和像素进行转换。
你了解ViewPager2吗?和ViewPager 1有哪些区别?
在做悬浮窗的时候你遇到了什么困难
说说Android中一些屏幕单位
apk为什么需要签名
binder说下
安卓的手势(Motion_Event 以及事件分发)
写一个代码 ,有个网络请求,在Activity中new一个http请求 是进程还是线程
在主线程请求网络嘛?
线程处理回来后,如果界面不见了怎么办
原生和跨端的看法
团队的git,分支,冲突
(LinearLayout 设置为垂直,然后LinearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL) )
安卓的适配单位换算
Bitmap
SurfaceView
LRU算法介绍原理
矩阵Matrix 图片的颜色参数通道
SurfaceView的特点,SurfaceView的缓存机制
Android读过什么源码(讲了okhttp的一些缓存策略和失败重连)
优化页面跳转和数据传递
用过git嘛
回滚用什么命令(revert)
Android如何进行屏幕适配?

你可能感兴趣的:(2020新鲜Java,Android面经)