面试了无数公司才总结的JAVA面试题(含答案),搞定80%以上的技术面!

前言

    最近技术交流群里面很多群友在最近面试完之后,都将面试题都发到群里一起讨论,还是比较火热的,都将答案讨论出来了,但是面试题都比较零散,所以博主将大家和博主自己搜集的面试题统一整理了下分享给大家!

文章结尾有惊喜哦!

算法

     建议准备一些常见的题目比较好,8大排序算法一定是要会的,然后就是可以针对链表、树分别找出常考的20-30道题目去做去吸收,还有一些DP、贪心、排列组合经典题目,图的话可能code的不多,但是图的算法还是要掌握的,必要时讲出来,拓扑、迪杰斯特拉、普利姆和克鲁斯卡尔啥的。

数据结构

     数据结构 ,无非就是数组、链表、栈、队列、树、图这几类,最重要的应该是对他们的使用场景和区别要有所了解。比如树的话,搜索树、平衡搜索树、红黑树、前缀树、B、B+这些。

计算机网络

  1. 说一说七层模型,各层都是干什么的?有哪些协议?
  2. TCP和UDP区别,各自的组成部分,基于TCP和UDP的应用层协议?各自应用场景?
  3. TCP三次握手、四次挥手、为什么三次握手?四次挥手?,三次挥手行不行,连接后客户端出现故障怎么办?
  4. TCP如何保证可靠,拥塞控制过程?
  5. TCP粘包、拆包出现原因场景及如何解决?
  6. CLOSE-WAIT 和 TIME-WAIT ?
  7. TIME-WAIT连接过多什么原因?解决?
  8. 浏览器输入URL并回车的过程发生了什么?DNS查询过程?DNS什么时候用TCP,什么时候用UDP?CDN知道吗?
  9. HTTP1.0、1.1、2.0区别?
  10. HTTP报文格式?常用字段?强缓存和协商缓存?
  11. HTTP和HTTPS的区别?HTTPS的建立过程?对称加密和非u对称加密?
  12. HTTP请求方式?GET和POST区别?
  13. 常见状态码?301和302区别?502和504区别?
  14. cookie和session区别?
  15. 跨域?怎样解决跨域?
  16. SYN泛洪攻击?XSS脚本攻击?csrf跨站请求伪造?解决方式?
  17. ARP欺骗?DNS劫持?傻瓜窗口?等等。。。

操作系统

     个人觉得OS这块还是比较好准备的,考的主要就是进程线程、虚拟内存这两大块比较多。Linux考的更多的是常用命令,以及给你个问题怎么排查什么的。

面试题举例:

  1. 进程由什么组成?进程的几种状态?低地址到高地址都存放哪些东西?
  2. 进程与线程的区别?
  3. 进程通信方式有哪些,对比优缺点?
  4. 用户态和内核态?
  5. 上下文是什么?进程线程上下文切换?
  6. 进程调度算法?产生死锁必要条件?解决方式?
  7. 分页和分段,页面置换算法?
  8. swap分区?fork函数?僵尸进程?孤儿进程?
  9. CPU缓存?MESI了解吗?等等
  10. IO模型?多路复用select、poll、epoll?

Java多线程

  1. Java中线程通信方式
  2. Java中乐观锁?CAS问题?什么时候用乐观锁?
  3. volatile关键字?如何防止重排序?底层指令?
  4. Sychronized 与 ReentrentLock 对比?
  5. Sychronized底层怎么实现?MarkWord是什么?偏向锁、轻量级锁、重量级锁?自旋参数怎么设置?
  6. AQS原理?如何实现的公平锁,非公平锁?
  7. 读写锁?锁降级?变量的高16位低16位分别保存什么信息?
  8. CountDownLatch、CyclicBarrier、Semaphore?
  9. 线程池?7大参数?线程池工作过程?自带的线程池为什么不建议用?核心数量应该怎么设置?
  10. 手写个生产者消费者、阻塞队列、多线程轮流打印ABC?等等吧

JVM

     首先主要掌握就是JVM的内存划分,各部分存储什么,干什么的,堆的划分、对象分配原则(对象在老年代还是新生代,怎么移动什么的)、垃圾回收算法、如何标记对象(引用计数法的缺点?GCroots法都哪些对象可以当作根)、对象由哪几部分组成、垃圾回收器(就是G1、CMS可以主要看看,再者可以看下ZGC收集器)、双亲委派原则及破坏、类的加载过程(可以从.java生成.class过程说起,JIT编译器)等等。

大多数比较常见的题目,再者就是JVM调优相关,这个怎么说,就是按自己理解和项目的不同来说吧。

框架

     面试的话也是主要看一看各个框架的原理和理解吧,例如Spring的IOC,AOP?循环依赖怎么解决的?bean的生命周期?SpringBoot的启动流程?RPC框架都包含哪几部分?

面试中框架问的还是不多的,问也都是一些特性原理,常见的一些问题,花点时间准备下问题不大。

数据库

  1. 引擎的区别?
  2. 索引(失效?联合索引?索引建立原则?)
  3. 锁(行锁?表锁?间隙锁?)
  4. 事务(隔离级别,RR怎么避免不可重复读(MVCC)?又怎么避免幻读(MVCC+间隙锁)?)
  5. B+树索引和哈希索引、聚集索引和非聚集索引?
  6. 回表查询和索引覆盖?
  7. 一条SQL执行过程是怎样的?
  8. 数据过大怎么优化分页?
  9. 各个日志,都干什么的?
  10. SQL过慢怎么排查?Explain的关键字段?
  11. MySQL中LUR怎么改造的?为啥这么改?等等。
  12. 主从复制?分库分表依据?

Redis

  1. Redis为什么快?
  2. Redis持久化方式?
  3. 数据类型?底层数据结构?
  4. 过期策略和内存淘汰策略?
  5. Redis 应用场景?
  6. pipeline批量处理的优点?
  7. 主从复制原理?cluster了解吗?怎么确定一个key落在哪个节点?一致性哈希了解吗?有什么缺点?怎么解决?
  8. 缓存雪崩、缓存穿透
  9. 如何保证缓存与数据库数据一致性?等等。

中间件

     关于中间件,了解的可能首先就是消息队列,我最常使用的就是 RabbitMq,但是也要对其他的产品特性与应用场景有所了解,例如Kafka、RocketMq的对比。消息队列常问的问题例如:

  1. 消息队列应用场景,作用?
  2. 如何保证消息可靠?
  3. 如何保证消费者幂等?
  4. 如何保证消息顺序性?
  5. MQ积压了很多怎么办?等。

分布式

     分布式相关的知识还是要掌握的,毕竟以后的系统都不可能是单点部署的,这就可以看下CAP理论?BASE理论?分布式事务?限流的方案?分布式id生成策略?分布式锁?或者常用的Hystrix组件等。面试时还是考的居多的。

大数据类型

这类题可以多看几个,思路大多大同小异,还是比较好准备的,例如:

  1. 海量数据整数,内存受限找中位数?
  2. 如何在100亿URL中快速判断某URL是否存在?
  3. 海量数据找次数TOP100?等等。

总结

面试是一场持久战,在这个过程中你不仅会收获 满意的offer,锻炼自己的 表达能力和提高情商,还能 交到来自各个地方的朋友,那群曾经与你一起战斗的好朋友们!

宝剑锋从磨砺出,梅花香自苦寒来。祝愿大家拿到满意的offer。

 小编也把面试题和答案整理好啦:戳这里免费领取,暗号:CSDN,还有更多大厂面试专题资料和视频哦!

 写文不易,觉得有帮助还请点赞关注支持一下小编,也欢迎各位大佬提出问题,感谢!!!

猜你喜欢

转载自blog.csdn.net/qq_43080036/article/details/108996420
今日推荐