【个人总结】Java面试复习大纲

目录

 

1、知识点部分

1.1 java基础知识

List

Map

Set

零散的知识点

1.2 多线程

1.3 spring

1.4 数据库

1.5 计算机网络

1.7JVM

1.8 手撕代码


1、知识点部分

知识点主要分为:java基础知识、多线程、spring、数据库、计算机网络、JVM和手撕代码7大部分。

 

1.1 java基础知识

String、StringBuilder、StringBuffer的区别

Java核心数据结构(List、Map、Set)

List

ArrayList、LinkedList、vector、CopyOnWriteArrayList的区别

CopyOnWriteArrayList的原理

Map

Map的实现

hashmap、Hashtable、LinkedHashMap、TreeMap、ConcurrentHashMap的区别及实现原理

Hashmap的原理、底层、扩容机制

Hashtable的原理、底层、扩容机制

ConcurrentHashMap的原理、底层(重点)

Set

Set的实现

HashSet、LinkedHashSet、TreeHashSet的区别及原理

零散的知识点

封装、继承、多态(面向对象编程的三大特性)

重载和重写的区别

final、finally、finalize

Static关键字

i++与++i

equals()与"=="的区别?

重写equals()方法为什么要同时重写hashcode()方法

this和super的区别

自动装箱与自动拆箱

异常

Java中throw和throws的区别

1.2 多线程

进程与线程的区别

多线程的实现(Thread、Runnable、callabe+futuretask、线程池四种方法的区别、实现原理、适用场景)

线程的启动(start()和run()的区别)

线程传递参数(1.向run()方法进行传参;2.获取子线程的返回值)

Runnable与callable的区别

线程状态(新建、执行、无限等待、限期等待、阻塞、终止6种状态变换过程)

sleep()和wait()的区别

Notify()和NotifyAll()

Yield ()

线程的停止

线程之间的转换

线程不安全的原因

Synchronized关键字

Synchronized和ReentrantLock的对比、区别、适用场景

锁的种类:公平锁与非公平锁、乐观锁与悲观锁、独享锁与共享锁、可重入锁、分段锁、锁的状态(无锁、偏向锁、轻量级锁、重量级锁、自旋锁、适应自旋锁)相关的知识点和对比。

CAS(Compare and Swap )原理

AQS(AbstractQueuedSynchronized)原理

死锁含义、成立条件

如何有效避免死锁

银行家算法

Volatile关键字

线程之间的通信

Java线程池

为什么使用线程池

线程池的创建、核心参数

线程池的种类

线程池任务执行方法(submit() 、execute()两种的区别)

线程池关闭

线程池常用等待队列

1.3 spring

Spring概述

AOP

AOP的实际例子

AOP的***模式

IOC

DI(依赖注入)

Bean的Scope作用域

Bean的生命周期

Spring的事务

Spring事务隔离级别

SpringMVC

Spring的过程

1.4 数据库

范式(最好记住几个例子)

索引(索引的含义、优缺点)

索引的数据结构(底层)

索引为什么使用B+树不用B树

索引的分类

聚簇索引与非聚簇索引

建立索引的考虑因素

使用索引的注意事项

事务(ACID)

多事务并发会造成的问题(脏读、不可重复读、幻读)

事务隔离性

读锁与写锁

高并发控制数据库

Mysql的工具分析

MyBatis一级缓存

MyBatis二级缓存

Mybatis中的#和$的区别

高并发数据库设计(百万级数据库设计)

数据库优化

主从复制

Mysql数据引擎的选用

数据库连接池

1.5 计算机网络

OSI七层模型、五层模型、TCP/IP四层模型

三次握手(为什么不是两次、为什么不是四次)

四次挥手(为什么是四次挥手不是三次)

保活计时器

确认应答机制(ACK)

滑动窗口

超时重传机制(去重机制、快重传)

流量控制

拥塞控制(慢启动、拥塞窗口)

TCP可靠性保证的机制

TCP与UDP的区别

Post与get区别

http与https

http常见返回码

http请求的过程

怎么防止http请求的攻击

对称加密与非对称加密

Cookie和session 的区别

1.7JVM

JVM的组成(类加载器、运行数据区、解释器、本地接口各自的含义与作用)

java程序在JVM中的执行过程

类加载的时机

类加载器的种类(Bootstrap 、Extension 、App 、自定义四个类加载器的工作责任)

类加载器的工作过程(双亲委派机制)

类加载的详细过程(加载-连接-初始化-使用-卸载 五个步骤的含义)

JVM内存模型(程序计数器、堆、虚拟机栈、本地方法栈、方法区)

GC(垃圾回收机制)

判断对象存活的方法(引用计数法和可达性分析的区别)

可达性分析中可以作为GC Roots的对象

垃圾回收算法(标记/清除算法、复制算法、标记/整理算法的区别以及适用环境)

GC时间

什么情况下回出现内存溢出,内存泄漏?

GC回收器

1.8 手撕代码

在面试过程中,肯定是逃不过手撕代码这个环节的。我在面试中遇到的手撕代码如下:

线程安全的单例模式(多种写法)

快排(三种,其中美团考了一个单链表的快排)

二叉树的前中后序遍历(递归和非递归)

多个线程的交替打印

两个栈实现队列

链表反转

二分查找

逆波兰表达式

斐波那契数列(青蛙跳台阶):递归和非递归两种方法

 

下面给出一些经常访问的知识点网址:

树的讲解:https://www.jianshu.com/p/912357993486

程序员必知的八大排序:https://www.cnblogs.com/crazylqy/p/7640829.html

java中的IO:https://www.cnblogs.com/ylspace/p/8128112.html

JVM面试知识点:https://www.cnblogs.com/lfs2640666960/p/9297176.html

JVM内存模型理解:https://www.jianshu.com/p/76959115d486

JAVA面试大纲:https://www.jianshu.com/p/a07d1d4004b0

java多线程学习:https://cloud.tencent.com/developer/article/1344265

Spring常见面试题:https://blog.csdn.net/a745233700/article/details/80959716

各大公司java面试题总结:https://www.cnblogs.com/itcx1213/p/10963809.html

2019java面试题:https://www.cnblogs.com/marsitman/p/9539369.html

剑指offer:https://www.nowcoder.com/ta/coding-interviews

leetcode100题:https://leetcode-cn.com/problemset/hot-100/

常见算法面试题:https://blog.csdn.net/qiaoer2017/article/details/82715028

计算机网络面试题总结:https://blog.csdn.net/qq_39322743/article/details/79700863

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值