当前位置: 首页 > news >正文

6大面试技能树:JAVA基础+JVM+算法+数据库+计算机网络+操作系统,时刻为面试做准备!!

写在前面


走过春招,跨过秋招,一年又一年,又将踏入新的一年。事实上,面试问题几乎集中在JAVA基础、JVM、算法、数据库(MySQL、Redis)、计算机网络、操作系统等方面,接下来小编会分类进行列举(敲黑板,这都是要考的重点啦)!!!

01 设计模式(23种设计模式)

  • 单例模式 懒汉、饿汉、双重校验锁、静态内部类

  • 工厂模式

02 JAVA基础(HashMap,线程池)

  • 抽象类和接口区别

  • 集合类的结构 Iterator、Collection(List、Set、Queue)、Map

  • ArrayList和LinkedList的区别

2.1 HashMap

  • 底层结构 数组 + 链表

  • Put 的过程

  • 为什么长度是2的倍数 找索引时 key 的 hash 值与数组的长度值减 1 进行与运算,长度为 2 的倍数时能减少碰撞

  • JDK 1.7 和 1.8 中 HashMap 的区别 1.8 增加红黑树、头插变为尾插、扩容后元素位置要么在原位置,要么在原位置 + 扩容前旧容量

  • 为什么线程不安全 扩容时链表可能形成闭环

  • ConcurrentHashMap 怎么保证线程安全

  • ConcurrentHashMap 和 HashMap 区别

2.2 线程池

  • 线程池常用参数 核心线程数、最大线程数、阻塞队列、线程最大存活时间

  • 线程池工作流程

  • 线程池的类别和区别

  • 阻塞队列的类别和区别

03 JVM

  • 内存结构和各自存放的内容 方法区、堆、虚拟机栈、本地方法栈、程序计数器

  • 新生代和老年代垃圾回收算法 新生代 -> 复制,老年代 -> 标记-整理(CMS用的标记-清除)

  • CMS/G1的流程 初始标记 -> 并发标记 -> 重新标记 -> 并发清除

  • CMS/G1的特点和区别 CMS:尽可能减少停顿时间,采用标记-清除,会造成内存碎片化 G1:可以预测停顿时间,采用标记-整理,减少内存碎片化, 将内存划分为 region 粒度

  • 判断垃圾是否可以回收的方法 引用计数法、可达性分析法

  • 哪些对象可以作为GC ROOT

04 Spring

  • IOC 和 AOP 的含义和原理

  • Spring、SpringBoot、SpringMVC 的区别

  • SpringBoot 的启动流程

  • Bean 的生命周期

  • SpringMVC 的流程

05 MySQL(事务,索引)

5.1 事务

  • 什么是事务

  • 事务的特性(ACID),详细说明各个特性的含义 原子性、一致性、隔离性、持久性

  • 事务隔离级别 未提交读 -> 已提交读 -> 可重复读 -> 串行化

  • 脏读、不可重复读、幻读的区别

  • 事务隔离级别怎么实现预防上述问题(eg: 可重复读怎么实现预防不可重复读)

5.2 索引

  • 常用索引(B树、Hash)

  • 聚簇索引和非聚簇索引的区别

  • 联合索引和单个索引的区别,联合索引的最左匹配原则

  • B树和B+树的区别 B+树的非叶子节点不保存数据,所以磁盘页能容纳更多节点元素,更“矮胖” B+树查询必须查找到叶子节点,B树只要匹配到即可不用管元素位置,因此B+树查找更稳定(也不慢) 对于范围查找来说,B+树只需遍历叶子节点链表即可,B树却需要重复地中序遍历

06 Redis

  • Redis 的五种数据结构 String、Hash、List、Set、Zset(SortSet)

  • Redis 为什么快 纯内存、单线程、IO多路复用(一般会继续问IO多路复用相关问题)

  • Redis 持久化 RDB、AOF

  • Redis 高可用 哨兵机制、Redis Cluster、持久化(上面那个)

07 计算机网络(TCP & UDP,HTTPS)

  • 点击一个URL到页面返回,发生了什么 客户端传给服务端时经过 TCP/IP 四层模型,中途依次加入HTTP报文、TCP报文、IP报文、MAC报文,然后逆序依次拆包

  • OSI 七层模型 & TCP/IP 四层模型

  • cookie 和 session 的区别

7.1 TCP & UDP

  • TCP 三次握手,四次挥手的流程(最好能画图,说明各阶段状态)

  • 为什么需要三次握手 防止已过期的连接再次传到被连接的主机

  • 为什么需要四次挥手 / 断开连接时为什么比建立连接多一次 服务端的 ACK 和 FIN 一般都会分开发送,ACK 表示自己收到了客户端的断开请求(但还有数据没传输完),FIN 表示自己传输完了数据

  • TCP 和 UDP 的区别

  • TIME_WAIT 的作用 保证客户端发送的最后一个ACK报文能够到达服务器 防止类似与“三次握手”中提到了的“已经失效的连接请求报文段”出现在本连接中。客户端发送完最后一个确认报文后,在这个2MSL时间中,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失

7.2 HTTPS

  • HTTPS的优势 CA证书认证、加密传输

  • HTTPS建立连接流程

  • 为什么传输过程中采用对称加密,协商时采用非对称加密 对称加密快

08 操作系统(进程 & 线程, Linux(几乎为Linux命令),算法)


8.1 进程 & 线程

  • 进程和线程的区别

  • 进程间通信方式 管道、消息队列、信号量、共享内存

  • 线程间通信方式 消息队列、全局变量

8.2 Linux(几乎为Linux命令)

linux命令全集(PDF)

  • 查找某个进程(ps aux |grep threadId)

  • 杀掉某个进程(kill,参数添加-9表示强制执行)

  • 查看某个端口是否被占用(netstat -anp |grep threadId)

  • 实时查看进程状态(top)

8.3 算法

算法刷题LeetCode中文版(PDF)
 

  • 最大子序列和

  • 反转链表

  • 数组中查找两数之和为K的序列对

最后总结

跳槽无处不在,时时刻刻都在发现,新年即将来临,弱弱的问一句:你真的准备好了吗?
如果你正在准备2022年的面试,那么建议看看这篇6大JAVA面试技能树:JAVA基础+JVM+算法+数据库+计算机网络+操作系统,有需要的小伙伴可以在评论区回复【555】即可!!

相关文章:

  • sobel算子边缘提取及程序优化(C语言)
  • python数据结构与算法
  • cookie,storage,sesstion区别
  • 学生家乡网页设计作品静态HTML网页—— HTML+CSS+JavaScript制作辽宁沈阳家乡主题网页源码(11页)
  • MKD调试下载的时候提示:Contents mismatch at: xxxxxxxxH (Flash=xxH Required=xxH)
  • 【Python基础入门技能树笔记】数据类型-基本数据类型
  • springboot下使用druid-spring-boot-starter
  • PHREEQC建模及典型案例解析与高阶拓展应用【反向“编译”、“玩转”后处理技术、GibbsStudio和PhreePlo方法】
  • Springboot集成Quartz
  • React 18的新特新
  • springboot实验课程辅助管理系统毕业设计-附源码191113
  • Java面向对象(封装,继承,多态,接口)
  • 头门港大屏
  • pip更改为国内源
  • DBCO-PEG-carboxyl COOH-PEG-DBCO 二苯并环辛炔-聚乙二醇-羧酸 羧酸修饰PEG二苯并环辛炔
  • gops —— Go 程序诊断分析工具
  • JavaScript DOM 10 - 滚动
  • Java-详解HashMap
  • JS题目及答案整理
  • Object.assign方法不能实现深复制
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • Vue全家桶实现一个Web App
  • web标准化(下)
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 工程优化暨babel升级小记
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 前端路由实现-history
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 实习面试笔记
  • puppet连载22:define用法
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • (1)Nginx简介和安装教程
  • .form文件_一篇文章学会文件上传
  • .net 验证控件和javaScript的冲突问题
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • @JsonSerialize注解的使用
  • [.net]官方水晶报表的使用以演示下载
  • [2024最新教程]地表最强AGI:Claude 3注册账号/登录账号/访问方法,小白教程包教包会
  • [acm算法学习] 后缀数组SA
  • [Android 13]Input系列--获取触摸窗口
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
  • [C++]C++类基本语法
  • [CC-FNCS]Chef and Churu
  • [CentOs7]iptables防火墙安装与设置
  • [HackMyVM]靶场Boxing
  • [IE编程] IE8 新增的C++开发接口
  • [leetcode]Symmetric Tree
  • [Linux] PXE批量装机
  • [node] Node.js的Web 模块
  • [NOIP2005]过河