首页 > 编程语言 >2024最新互联网工程师 Java 面试八股文及答案整理

2024最新互联网工程师 Java 面试八股文及答案整理

时间:2024-10-25 15:47:02浏览次数:7  
标签:八股文 哪些 Spring 什么 区别 2024 了解 Java

2024金九银十即将结束,竟很多同学会问 Java 面试八股文有必要背吗?!!

我的回答是:很有必要!!!!你可以讨厌这种模式,但你一定要去背,因为不背你就进不了大厂。

国内的互联网面试,恐怕是现存的、最接近科举考试的制度。

而且,我国的八股文确实是独树一帜。以美国为例,北美工程师面试比较重视算法(Coding),近几年也会加入 Design 轮(系统设计和面向对象设计 OOD)和 BQ 轮(Behavioral question,行为面试问题)。

那么为什么国内面试不采取这样的考察方式呢?简单来说,互联网 IT 行业的求职者太多了,如果考察的是清一溜的算法题和设计题,那么会要求面试官有极高的技术水平,还要花大量的时间成本和精力。

也许现行的八股文面试不是最优的解法,但的确是最符合当前国内 IT 环境的做法。

所以,我采访了超过 20 位资深大厂面试官后,一直在尽量精炼准确的整理一套切实可行的八股文,现在已经有 329 位粉丝通过这套题走入了理想的岗位,所以分享出来给大伙看看,有什么不足之处欢迎评论补充。

篇幅所限本文就只贴一下题目了,同学们可以自己先看看有哪些题是会的,答案的话我整理的一本《Java 面试八股文》PDF 里都有,获取的方法在文末了哦!

Java 基础

  1. Java 中的几种基本数据类型是什么?对应的包装类型是什么?各自占用多少字节呢?

  2. String 、 StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?

  3. String s1 = new String("abc");这段代码创建了几个字符串对象?

  4. == 与 equals?hashCode 与 equals ?

  5. 包装类型的缓存机制了解么?

  6. 自动装箱与拆箱了解吗?原理是什么?

  7. 深拷贝和浅拷贝区别了解吗?什么是引用拷贝?

  8. 谈谈对 Java 注解的理解,解决了什么问题?

  9. Exception 和 Error 有什么区别?

  10. Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)?

  11. Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符?

  12. 内部类了解吗?匿名内部类了解吗?

  13. BIO,NIO,AIO 有什么区别?

Java 集合框架

  1. 说说 List,Set,Map 三者的区别?三者底层的数据结构?

  2. 有哪些集合是线程不安全的?怎么解决呢?

  3. 比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同

  4. HashMap 和 Hashtable 的区别?HashMap 和 HashSet 区别?HashMap 和 TreeMap 区别?

  5. HashMap 的底层实现

  6. HashMap 的长度为什么是 2 的幂次方

  7. ConcurrentHashMap 和 Hashtable 的区别?

  8. ConcurrentHashMap 线程安全的具体实现方式/底层具体实现

jvm

  1. jvm 内存结构

  2. jvm 调优参数

  3. 什么是类加载?何时类加载?类加载流程?

  4. 知道哪些类加载器。类加载器之间的关系?

  5. 类加载器的双亲委派了解么? 结合 Tomcat 说一下双亲委派(Tomcat 如何打破双亲委托机制?...)。

  6. 为什么需要双亲委派

  7. Java 内存模型

  8. 栈中存放什么数据,堆中呢?

  9. 大对象放在哪个内存区域

  10. 堆区如何分类

  11. 垃圾回收有哪些算法

  12. GC 的全流程

  13. GC 中老年代用什么回收方法?

  • Java 内存区域详解(重点)

  • JVM 垃圾回收详解(重点)

  • 类文件结构详解

  • 类加载过程详解

  • 类加载器详解(重点)

多线程

  1. 线程和进程的区别。

  2. 什么是上下文切换?

  3. 什么是线程死锁?如何避免死锁?

  4. 乐观锁和悲观锁了解么?

  5. 说说 sleep() 方法和 wait() 方法区别和共同点?

  6. Java 线程池有哪些参数?阻塞队列有几种?拒绝策略有几种?新线程添加的流程?

  7. 实现 Runnable 接口和 Callable 接口的区别。

  8. 讲一下 JMM(Java 内存模型)。volatile 关键字解决了什么问题?说说 synchronized 关键字和 volatile 关键字的区别。

  9. AQS 原理了解么?AQS 组件有哪些?

  10. 用过 CountDownLatch 么?什么场景下用的?

数据库

MySQL

  1. 非关系型数据库和关系型数据库的区别?

  2. 事务的四大特性了解么?

  3. MySQL 事务隔离级别?默认是什么级别?

  4. 乐观锁与悲观锁的区别?

  5. MySQL 数据库两种存储引擎的区别?

索引

  1. 为什么索引能提高查询速度?

  2. 聚集索引和非聚集索引的区别?非聚集索引一定回表查询吗?

  3. 索引这么多优点,为什么不对表中的每一个列创建一个索引呢?(使用索引一定能提高查询性能吗?)

  4. 索引底层的数据结构了解么?Hash 索引和 B+树索引优劣分析

  5. B+树做索引比红黑树好在哪里?

  6. 最左前缀匹配原则了解么?

  7. 什么是覆盖索引

进阶

  1. 一条 SQL 语句在 MySQL 中如何执行的?

  2. explain 命令了解么?

  3. 简单说一下 SQL 调优思路。

  4. 简单说一下大表优化的思路。

  5. 分库分表了解么?为什么要分库分表?有哪些常见的分库分表工具(sharding-jdbc、TSharding、MyCAT...)?

Redis

  1. 分布式缓存常见的技术选型方案有哪些?说一下 Redis 和 Memcached 的区别和共同点

  2. 说一下有缓存情况下查询数据和修改数据的流程。

  3. Redis 有哪些数据结构?SDS 了解么?

  4. Redis 内存满了怎么办?

  5. Redis 内存淘汰算法除了 LRU 还有哪些?

  6. Redis 给缓存数据设置过期时间有啥用? Redis 是如何判断数据是否过期的呢?

  7. Redis 事务了解么?(Redis 可以通过 MULTI,EXEC,DISCARD 和 WATCH 等命令来实现事务功能)

  8. 缓存穿透和缓存雪崩问题了解么?有哪些解决办法?

  9. 如何基于 Redis 实现分布式锁?

网络

  1. OSI 与 TCP/IP 各层的结构与功能,都有哪些协议?为什么网络要分层?

  2. 计算机网络的一些常见状态码

  3. ping 所使用的协议

  4. TCP 的三次握手与四次挥手的内容? TCP 为什么连接是三次握手而断开是四次握手?

  5. TCP 与 UDP 的区别及使用场景

  6. TCP 是如何保证传输的可靠性?

  7. 一次完整的 HTTP 请求所经的步骤

  8. HTTP 协议了解么?HTTP 是基于 TCP 还是 UDP 的?

  9. HTTP 报文的内容简单说一下! HTTP 请求报文和响应报文中有哪些数据?

  10. HTTP 和 HTTPS 的区别了解么?

  11. HTTP 请求有哪些常见的状态码?

  12. HTTP 长连接和短连接了解么?

  13. Cookie 和 Session 的关系

  14. URI 和 URL 的区别是什么?

算法和数据结构

算法

  1. LRU 算法了解吗?你能实现一个吗?

  2. 写排序算法(快排、堆排)

  3. 使用数组实现一个栈

  4. 使用数组实现一个队列

  5. 实现一个链表、反转链表、

  6. ......

数据结构

  1. 数组 vs 链表

  2. 栈的应用场景

  3. 队列的分类、应用场景

  4. 红黑树的特点、红黑树 vs 二叉查找树

  5. 哈希表、哈希表应用场景

  6. 布隆过滤器了解吗?

  7. ......

系统设计

设计模式

  1. 何为设计模式?有哪些常见的设计模式?

  2. 单例模式了解么?说一下单例模式的使用场景。手写一个单例模式的实现。

  3. 观察者模式了解么?说一下观察者模式的使用场景。

  4. 工厂模式了解么?说一下工厂模式的使用场景。

  5. 责任链模式了解么?哪些开源项目(Netty、MyBatis ...)中用到了责任链模式?怎么用的?

  6. SOLID 原则了解么?简单谈谈自己对于单一职责原则和开闭原则的理解。

  7. 阅读 Spring 源码的时候什么设计模式最让你影响深刻?能简单讲讲吗?

常见框架

Spring

  1. 什么是 Spring 框架?

  2. 列举一些重要的 Spring 模块?

  3. 谈谈自己对于 Spring IoC 和 AOP 的理解

  4. Spring Bean 的生命周期说一下

  5. Spring 中的 bean 的作用域有哪些?

  6. 拦截器和过滤器了解么?

  7. Spring 动态代理默认用哪一种

  8. hibernate 和 mybatis 区别

  9. Spring Boot 和 Spring 的区别

  10. 说出使用 Spring Boot 的主要优点

  11. 什么是 Spring Boot Starter?

  12. 介绍一下 @SpringBootApplication 注解

  13. Spring Boot 的自动配置是如何实现的?

  14. Spring Boot 支持哪些嵌入式 web 容器?

权限认证

  1. 认证 (Authentication) 和授权 (Authorization)的区别是什么?

  2. 什么是 Cookie ? Cookie 的作用是什么?如何在服务端使用 Cookie ?

  3. Cookie 和 Session 有什么区别?如何使用 Session 进行身份验证?

  4. 如果没有 Cookie 的话 Session 还能用吗?

  5. 为什么 Cookie 无法防止 CSRF 攻击,而 token 可以?

  6. 什么是 Token?什么是 JWT?如何基于 Token 进行身份验证?

  7. 什么是 OAuth 2.0?

  8. 什么是 SSO(单点登录)?

分布式

分布式理论

  • CAP & BASE 理论详解

  • Paxos 算法详解

  • Raft 算法详解

RPC

RPC 基础:

  1. 了解 RPC 吗?有哪些常见的 RPC 框架?

  2. 如果让你自己设计 RPC 框架你会如何设计?

  3. 服务之间的调用为啥不直接用 HTTP 而用 RPC?

Dubbo:

  1. Dubbo 了解吗?

  2. Dubbo 的工作原理了解么?注册中心扮演了什么角色?注册中心挂了可以继续通信吗?

  3. Dubbo 的负载均衡策略了解么?

  4. Dubbo 的 spi 机制了解么?带来了啥好处?

分布式 ID

  1. 何为 ID?

  2. 何为分布式 ID?

  3. 一个合格的分布式 ID 需要满足什么要求?

  4. 分布式 ID 常见的生成方法有哪些?(数据库主键自增、数据库的号段模式、UUID、SNOWFLAKE 等等)

API 网关

  • 什么是网关?

  • 网关能提供哪些功能?

  • 有哪些常见的网关系统?

系统设计/场景题

  1. 假如有 10 亿个数,只有一个重复,内存只能放下 5 亿个数,怎么找到这个重复的数字?

  2. 如何设计一个秒杀系统(服务端、数据库、分布式)?分布式系统的设计?

  3. 有一个服务器专门接收大量请求,怎么设计?

  4. 如果让你自己设计 RPC 框架你会如何设计?

  5. 怎么快速出现一个 stackoverflow 错误?

  6. 如何设计一个秒杀系统?

  7. 如何设计一个微博 Feed 流/信息流系统?

  8. 如何设计一个短链系统?

项目经历

  1. 说说你的项目中的亮点有哪些?

  2. 项目用户人数有多少?最大在线人数多少?

  3. 画一下你的项目的架构图。

  4. 项目中遇到的困难有哪些?怎么解决的?

  5. xx 某块的数据库表是如何设计的?

HR 面

  1. 个人介绍

  2. 平时的兴趣爱好

  3. 对我们公司的了解

  4. 三个词形容自己

  5. 职业规划

  6. 平时的学习方式

  7. 大学里做过比较有意义的事情

  8. 手里还有哪些 offer

  9. 选择工作的理由排序(薪资、加班情况之类的)。

经验总结

  1. 学完了某个知识点之后,你可以去看看对应的八股文和知识点总结。

  2. 多面试,不要害怕失败,多总结经验。

  3. 尽早准备,不论是找工作前、面试前还是面试后。

  4. 如果是求职目标是中小厂、国企的话,算法相对来说不是那么重要。

  5. 如果你的学历比较一般的话,格外注意要把重心放在自己的项目经历上。

  6. 熟悉自己的简历。

  7. 电话和视频面试很平常,面试前提前准备一下。

  8. 复盘!!!不管是面试失败还是成功,都要养成复盘的好习惯。

因为篇幅限制,小册内容展示就到这里了

标签:八股文,哪些,Spring,什么,区别,2024,了解,Java
From: https://blog.csdn.net/m0_50180963/article/details/143236481

相关文章

  • 3.Java 运算符(算术运算符、赋值运算符、逻辑运算符、关系运算符、三元运算符、标识符
    一、算术运算符1、基本介绍运算符说明+正号-负号运算符说明+加-减*乘/除%取模(取余)运算符说明示例结果++自增(前),先运算后取值a=2;b=++a;a=3;b=3;++自增(后),先取值后运算a=2;b=a++;a=3;b=2;–自减(前),先运算后取值a=2;b=--a;a=1;b=1;–自减(后),先......
  • 20241023 模拟赛(GCD,包含,前缀,移动)
    看题戳这里总结20min自习。上来30min先把t1写了。然后t2没看明白,先打了个暴力?然后发现值域很离谱,dfs就行了。t3t4看了一眼就跑路了。解析A.GCD难度:黄注意到只有当\(n=\)素数\(p\)的正整数次幂时,有\(f(n)=p\),其他情况都是\(f(n)=1\)。所以用欧拉筛筛一遍......
  • java计算机毕业设计杂志销售系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着信息技术的飞速发展,传统的杂志销售模式面临着巨大的变革需求。当前,杂志行业虽然具有独特的内容优势,如专业性强、深度报道等,但在互联网的冲击......
  • java中变量的命名规范是?
    一、在Java中,变量的命名规范有助于提高代码的可读性和可维护性。以下是一些主要的命名规范:小驼峰命名法(camelCase)变量名的第一个单词首字母小写,后续单词的首字母大写。例如:firstName,totalAmount,isAvailable避免使用单字母命名除非在非常简单的情况下(如循环计数器),......
  • 前端开发必备Vs Code插件大全(2024最新)赶快收藏吧~
    1、装上这个Chinese(Simplified)就变成中文版的啦~2、GitLens—Gitsupercharged(上班族必备)git功能增强插件,鼠标放到代码行上,每一行代码的变动都一清二楚~3、GitHistory:可以查看提交历史,切换分支,查看提交记录等4、AutoImport、AutoCloseTag、A......
  • Java中循环结构中的for循环和练习案例
    文章目录前言循环结构for循环练习1(输出)练习2(求和)练习3(求偶数和)练习4(求水仙花数)练习5(求水仙花数且统计个数)练习6(求回文数)前言我是一名来自延边大学人工智能专业的热爱街舞的大四学生,目前在学习Java,我会根据我的学习路线给大家分享学习经验,这章我们学习Java中的控制结......
  • java计算机毕业设计足球青训俱乐部管理后台系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着社会经济的不断发展,足球运动在大众中的普及程度日益提高,足球青训俱乐部的数量和规模也不断增长。在这种发展趋势下,传统的管理方式已难以应对......
  • java计算机毕业设计邮递路线规划系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容邮递路线规划系统研究相关内容一、研究背景在当今社会,随着互联网技术的飞速发展,电子商务蓬勃兴起,这使得人们对快递服务的依赖程度日益加深。人们的消费习惯......
  • java基础
    接口和抽象类有什么共同点和区别?共同点:实例化:接口和抽象类都不能直接实例化,只能被实现(接口)或继承(抽象类)后才能创建具体的对象。抽象方法:接口和抽象类都可以包含抽象方法。抽象方法没有方法体,必须在子类或实现类中实现。区别:设计目的:接口主要用于对类的行为进行约束,你实现......
  • 基于javaweb的茶园茶农文化交流平台
    开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:Maven3.3.9浏览器:谷歌浏览器后台路径地址:localhost:8080/项目名称/admin/dist/index.html前台路径地址:localhost:80......