2022 秋招 Java 岗面试高频问题总结
面试,是进入一家心仪公司的钥匙,但是大多数人的面试都不是一帆风顺的。对于 Java 程序员而言,想要在面试过程中脱颖而出,除了要具有扎实的技术功底外,还需要掌握一定的面试技巧,做到知己知彼。下面就为大家分享下如何提高 java 开发岗的面试通过率?
根据经验,一般面试分几轮,多数是 3 到 4 面,前两轮是技术面,最后一轮是 HR 面,每轮面试时间大概都在 40 分钟左右。至于问的什么问题,就看你面试的级别,面试时候回答问题的流畅度,以及跟面试官是否投缘了。如果问你一个问题就卡主,回答起来吞吞吐吐的,答案也不准确,那估计问不了几个问题就结束了。如果回答问题时候,能引导面试官,进入一种有来有回的状态的话,面试成功的概率就会高很多。
至于问的内容,主要是基础知识和应用两方面,看你的技术基础是否扎实,功底是否深。实际应用方面,会看你是否有相关的项目经验,技术的应用能力,或者是给你一个场景,让你给一个技术解决方案。
Java 基础的话,基本上是集合、多线程、JVM 相关的一些基础知识;数据库方面,会涉及到相关的 mysql 建立索引的原理,事务的实现原理,大 key 建索引等;框架重点是 Spring 相关的,比如 IOC、AOP 等实现原理,spring 的注解等;常见中间件比如缓存 redis,消息中间件 kafka、rockmq. 算法题的话一般不会太难,主要是考验个人的思维能力和代码操控能力,但是一定要听清楚要求,不能拿着半截就跑。
项目经验介绍的话,说的时候要有重点,重点介绍自己在项目中担任的角色,负责的板块,解决那些问题,对于自己没有涉及到的或者不熟悉的板块不要讲,否则面试官深入问下去,自己回答不上就很尴尬了。而且在面试过程中,要看面试官的反馈,不能只顾自己讲,尤其是说一通自己项目上的术语,面试官完全听不懂,这会严重影响面试效果。总之,这部分主要是展示个人的工作经验以及项目过程中表现出的个人解决问题、排查问题、响应速度,以及沟通交流等的综合实战能力。
面试的时候,最好能引导面试官问问题,如果能带上自己的理解回答,有时候一来一回讨论 2、3 个问题就结束了。面试的时候也讲究话术和技巧,可以自己下来多模拟下,而且面试官常常会根据你的回答,在答案中寻找技术点往下接着问,深挖你的技术深度,从 2、3 个问题引申出很多其他问题。顺着自己的方向,面试效果就比较好了。小编这里已经整理好了答案,感兴趣的小伙可以添加 maxiaoye5397 即可获取
项目相关
1.1 介绍一下你简历上写的项目?自己主要做了什么?
1.2 你觉得项目里给你最大的挑战是什么?遇到了什么问题?如何解决的?从中学到了什么?
项目里面会不断出现各种问题,比如数据量过大造成的内存溢出问题,如何让程序运行效率更高,如何证明我们的算法比别人的算法效率高,如何找到新的观点来支撑我们现有的理论,如何向导师和师兄进行沟通完成接下来的工作。
1.3 项目的架构图能画一下不?
1.4 觉得项目有哪些地方可以改进完善?(比如:可以加一个 redis 缓存把热点数据缓存起来)
1.5 有没有遇到过内存泄漏的场景?
基础问题
2.1 进程和线程的区别?
2.2 进程的调度算法有哪些?(重要)
2.3 常用 IO 模型?
2.4 select、poll 和 epoll 的区别?epoll 的底层使用的数据结构。
2.5 进程的通信方式有哪些?线程呢?
2.6 fork 函数的作用?
2.7 协程的概念?
2.8. linux 进程和线程?
2.9 通过进程 id 查看占用的端口,通过端口号查看占用的进程 id ?
2.10 如何查看占用内存比较多的进程?
2.11 僵尸进程产生的原因?
2.12 孤儿进程产生的原因?
2.13 讲一下虚拟内存。虚拟内存和物理内存的关系是什么?
2.14 分段和分页讲一下?以及对应的场景?
2.15 讲一下用户态和内核态?所有的系统调用都会进入到内核态吗?
2.16 平常用什么 linux 命令比较多?如何打开文件并进行查找某个单词?怎么在某个目录下找到包含 txt 的文件?
2.17 用过 ping 命令么?简单介绍一下。TTL 是什么意思?
2.18 怎么判断一个主机是不是开放某个端口?
2.19 说一下你最用的比较多得模式(我说的工厂模式和观察者模式),再实现一个单例模式。
2.20 排序算法哪些是稳定的,为什么直接插入排序是稳定的,各种排序算法的时间复杂度和空间复杂度?
2.21 如何进行二叉树的各种遍历的非递归算法实现?简要讲述。
2.22 硬链接和软链接?
2.23 中断的分类?
2.24 软中断和硬中断?
2.25 红黑树和平衡二叉树?
Java 基础
3.1 StringBuilder 和 StringBuffer
3.2 Java 实现连续空间的内存分配?
3.3 创建对象的方式有哪几种?
3.4 接口和抽象类有什么区别?
3.5 深拷贝和浅拷贝区别?
3.6 讲一讲封装,继承,多态(重要)
编译时多态
运行时多态
3.7 泛型是什么?类型擦除?
3.8 如何实现静态代理?有啥缺陷?
3.9 动态代理的作用?在哪些地方用到了?(AOP、RPC 框架中都有用到,面试笔试中经常要求手写一个动态代理)
3.10 JDK 的动态代理和 CGLIB 有什么区别?
3.11 谈谈对 Java 注解的理解,解决了什么问题?
3.12 Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)?
3.13 为什么框架需要反射技术?
3.14 获取 Class 对象的两种方式
3.15 内存泄露和内存溢出的场景。
内存泄露的场景
内存溢出场景
3.16 讲一下,强引用,弱引用,软引用,虚引用。
3.17 一个对象是否有虚引用的存在,不会对其生存时间造成影响,也无法通过虚引用 得到一个对象。
3.18 讲一下 Java 的 NIO,AIO, BIO?
3.19 Java 中 finalize()方法的使用?
3.20 GC Root 对象有哪些
3.21 Java 中 Class.forName 和 ClassLoader 的区别?
3.22 讲一下 CopyOnWriteArrayList 和 CopyOnWriteArraySet?
CopyOnWrite 容器:
CopyOnWrite 的缺点
3.23 单例模式(重要)
3.24 Java 中>>和>>>的区别
计网
4.1 为什么网络要分层?
4.2 TCP/IP 4 层模型了解么?
4.3 HTTP 是哪一层的协议?http 常见的状态码
4.4 HTTP 和 HTTPS 什么区别?
4.5 讲一下对称加密算法和非对称加密算法?
4.6 HTTP2.0 讲一下
4.7 HTTP 报文详解?详细说一下请求报文,以及 HTTP 和 TCP 的区别
4.8 TCP 三次握手的过程,以及三次握手的原因?
4.9 TCP 四次挥手的过程,以及四次挥手的原因?
4.10 TCP 滑动窗口是干什么的?TCP 的可靠性体现在哪里?拥塞控制如何实现的?
4.11 TCP 和 UDP 有什么区别?及其适用的场景。
4.12 Mac 地址和 ip 地址的区别?既然有了 Mac 地址,为什么还要 ip 地址呢?
4.13 当你打开一个电商网站,都需要经历哪些过程?分别用到了什么协议。
4.14. 电子邮件的发送过程?
4.15 DNS 解析过程,DNS 劫持了解吗?
4.16 GET 和 POST 有什么不一样?
4.17 session 和 cookie 的问题?
4.18 HTTP 是不保存状态的协议,如何保存用户状态?
4.19 Arp 协议?
4.20 DDos 攻击了解吗?
集合框架
5.1 ArrayList 的扩容机制?
5.2 HashMap 的底层实现、JDK 1.8 的时候为啥将链表转换成红黑树?HashMap 的负载因子
5.3 ConcurrentHashMap 的底层实现
5.5 什么 ConcurrentHashMap 的读操作不需要加锁?
5.6 HashMap,LinkedHashMap,TreeMap 有什么区别?HashMap ,TreeMap
5.7 有哪些集合是线程不安全的,又有哪些集合是线程不安全的?怎么解决呢?线程安全的集合类.
5.8 什么是快速失败 (fail-fast) 、能举个例子吗?什么是安全失败 (fail-safe) 呢?
5.8 HashMap 多线程操作导致死循环问题异常
多线程
6.1 在多线程情况下如何保证线程安全。
6.2 写一个死锁的例子
6.3 讲一下 volatile 关键字的作用。
6.4 synchronized 作用,讲一讲底层实现。
6.5 ReetrantLock 和 synchronized 的区别
6.6 说说 synchronized 关键字和 volatile 关键字的区别
6.7 ReetrantLock 实现方式
6.8 interrupt,interrupted 与 isInterrupted 方法的区别? 如何停止一个正在运行的线程
6.9 线程池作用?Java 线程池有哪些参数?阻塞队列有几种?拒绝策略有几种?线程池的工作机制?
6.10 线程池拒绝策略分别使用在什么场景?
6.11 线程死锁,解除线程死锁有哪几种方式?(两次栽倒这题上了,时间太久又忘记了,如何解决很重要)
6.12 ThreadLocal 是什么,应用场景是什么,原理是怎样的?
6.13 ThreadLocal 类为什么要加上 private static 修饰?
6.14 ThreadLocal 有什么缺陷?如果线程池的线程使用 ThreadLocal 会有什么问题?
6.15 介绍一下 Java 有哪些锁
6.16 乐观锁和悲观锁讲一下,哪些地方用到。
以上内容是 Java 高频重点面试问题总结,小编这里已经整理好了答案,感兴趣的小伙可以添加 maxiaoye5397 即可获得,希望能够帮助大家快速达到面试状态,顺利拿到心仪 offer 。
评论