【近五千字纯手撸】✨前后一个月面试30家中大型高级、资深java工程师终获500强公司offer心得以及经过

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
简介: 【近五千字纯手撸】✨前后一个月面试30家中大型高级、资深java工程师终获500强公司offer心得以及经过

🌈🌈一个毕业两年的双非本科的小小程序员的冲击历程,拿到了500强的offer。


链接:https://blog.csdn.net/asd1358355022/article/details/119707811


前提背景


🌈🌈当前公司岗位已不足以满足我个人未来规划以及当前的工作已经不满足我的能力提升,故开始找下一份工作。我从7月中旬开始,每天下班开始高强度备战,7月下旬开始窥探当前行情,投递简历。前前后后陆陆续续接到了30来家中大型公司的面试邀约。


🌈🌈面试范围很广泛,到了高级和资深这种级别,面试对基础以及框架研究和使用的深度把控很严格,其中很多家公司一轮基础面试动辄1个多小时,笔试题也是尤为重要,有的面试官会要求你共享屏幕,看着你一下一下敲。面试造飞机,工作拧螺丝。相信大家都对这句话耳濡目染了吧。🌝


🌈🌈接下来带大家看一下我个人的规划以及工作的无缝衔接。


在职or离职在找工作?


🌈🌈找工作,在职找工作和离职找工作哪一个会好一点,以我的角度来看,我觉得在职找工作会比较好一点,不要因为受不了了就光速离职,但是离职后找工作的消费和找工作期间没有工资,而且你可能会因为短暂时间找不到工作而焦虑,你会损失很大,这个自己好好想一下也可以知道,况且当前的工作极其不好找,不管是应聘者也好招聘者也罢,都是选择好的机会,大海淘沙,应聘者天投百份,hr天阅百份简历,大家都懂。


🌈🌈所以个人认为在职找工作时时最优解,但是切勿在离职前摸鱼,让逮着了可没你好果子吃,到时候回调的时候你可要惨喽,你的上司万一不满意,在下家公司回调的时候给你说点黑话,受伤的还是你,所以在职找工作需要注意一下。其次需要一段时间对自己未来进行规划,包括意向的公司,入自己意向的第一阶梯公司,第二阶梯,第三阶梯等,指定面试计划,包括面试题,笔试题的联系。以及自己时间点的规划,包括提离职意向,争得同意,工作交接时间,离职后到下家公司的间隙期。


我所制定的计划


🌈🌈我的计划🌈🌈
1、6月下旬开始对个人未来进行重新规划:规划自己未来的发展线,所要从事的岗位和行业
2、找工作时间点的规划:我制定1个半月的时间从复习到找到工作的计划(依个人情况进行规划,我个人是制定的强节奏计划),5周找工作时间,最后一周留给自己休息。
3、开始从招聘软件看意向公司,列举出我要投递的意向公司。(高优、中优、低优意向)
4、6月末拟定面试计划,包括复习的范围,笔试题的练习。(从7月到8月中旬一直在学习,晚上下班回去猛攻面试题,基本上周末也是战斗状态)
5、7月初下旬,对个人简历进行优化。包括个人履历,个人技能,个人项目,个人职责进行一一优化。(除了学历,简历就是敲门砖,好好花心思准备下,让人眼前一亮的简历可是会让你增大面试几率,但是不要过分夸大其词,吹过多的🐂,其实自身实力并没有吹的那么牛,就算入职了也可能会被炒,需要注意一下)
6、7月中下旬万事俱备,开始投递简历,自己意向的公司开始投递。
7、7月下上旬开始收到面试邀约开始面试。
8、7月末旬向上司提出离职申请,争得同意。
9、8月初旬开始书写交接文档。晚上下班面试依旧。
10、8月中旬已经收到几个意向的offer,从中选择了最优的offer。
11、8月下上旬,工作交接完毕,开始休没休完的假期,8月底离职。9月初进行入职。🌝(阴差阳错下无缝衔接了工作,我都感慨,这种感觉妙不可言)


我的面试题集


🌈🌈接下来我带大家看一下我遇到的面试题,找工作不是儿戏,切勿划水。记住你的未来要你自己给予。


笔试题


🌈🌈笔试题在3家公司遇到过,初级、中级岗位笔试题会稍微多一点,高级个资深往上基本上很少有笔试题,除非对java基础要求非常高的岗位


1、遍历二叉树节点,并以数组的新式输出 例如{5,4,#,3,2,#1} [5,4,3,2,1]

2、手写单例模式

3、SQL——查找第N高的数据

id salary

1

100

2

200

3

300

4、手写一个阻塞队列,完成添加、获取功能(自行选择一种阻塞队列)


5、一个青蛙跳台阶,有时候可以跳1个台阶,有时候可以跳2个台阶、共有多少种跳法


面试题

🌈🌈面试不要给自己挖坑,挖的坑如果在面试官的炮火追问下,填不了就是坑了自己。
🌈🌈面试官提出来的问题你要主动发挥,一问一答模式基本上离凉差不多了,就算答不上来也要往相似的方向靠一靠。面试官问到如何你有深入挖掘,就往深处讲,给你表现机会你就得中用。🌝


工作项目介绍部分


1、项目介绍


2、遇到的比较有挑战性的问题(包括需求以及遇到的问题:回答的不太如意会继续问你,还有没有更有难度的)


3、项目中用到的设计模式,为什么要用这个设计模式,用这个设计模式的优缺点是什么,如何能改善缺点?


4、你的代码和同事之前的代码设计冲突,你如何做


5、你在工作中和同事是如何交互的


java基础部分


1、包装类和基本类型底层如何的转换


2、String 和 int转换的方式


3、String StringBuffer 和 StringBuilder


4、float类型值如何转变为String类型,丢失精度如何解决


5、抽象类和接口区别


6、接口jdk1.7和jdk 1.8之后得区别


7、接口和抽象类能被实现吗


8、final、finally、finalize的区别,一个类是final类,可以被继承吗


9、列举出线程安全和线程不安全的框架


10、常用的集合 hashmap的原理


11、重写和重载区别


12、什么是函数式编程


13、hashset的底层原理


14、HashMap 和 Hashtable 的区别


15、HashMap和ConcurrentHashMap区别


16、jdk1.7和1.8中 ConcurrentHashMap 有什么区别


17、同步io和异步io的区别,串行io一定比并行io快吗


18、泛型的作用,泛型T、?和Object的区别,?extends xxx是什么情况下使用的


19、什么时候会使用反射,使用反射创建对象和直接new对象区别


20、类加载机制


21、类加载准备阶段做什么事情


22、一个类有两个自定义加载器,这个类会加载几次、自定义加载器和其他加载器区别


23、https协议原理、http和https协议区别


JUC部分


1、线程池原理


2、线程池的拒绝策略有哪些


3、线程池中阻塞队列的实现原理


4、如何设计线程池中的线程、如果机器是4核8G的如何设计线程池参数


5、aqs原理


6、核心线程在什么时候初始化


7、线程池中除了try catch之外如何捕获异常


8、100个线程每个线程都执行完,我如何获取所有的返回值


9、不建议使用Executors创建线程池的原因


10、CAS是什么


11、ReentrantLock中AQS部分是如何实现的


12、Synchronized原理


13、锁升级原理


14、锁膨胀、锁消除、锁自旋、适应锁自旋是什么


15、java中的锁有哪些


16、有涉及过锁的优化吗


17、volatile是什么,为什么volatile能保证了值的可见性


18、synchronized底层原理


19、synchronized特性


20、ReentrantLock是否公平


21、对象头中有哪些东西


JVM、JMM相关


1、对jvm内存结构(JVM)理解,组成部分,挑一块熟悉的区域讲解一下


2、对jvm内存模型(JMM)理解,里面的原子操作有哪些,线程和主存之间的交互,主内存和工作内存的数据一致性是如何保证的


3、gc收集器有哪些,如何选择使用,cms收集器运行过程


4、什么情况下出现内存泄露的情况,内存结构中哪些会出现内存溢出


5、内存泄漏如何排查


6、jvm full gc的原理


7、full gc的时候还跑着应用,应用会不会受到影响


8、STD(stop the world)是什么


9、safepoint是什么,saferegion是什么


10、jvm分代算法有哪些


11、jvm垃圾清理算法有哪些


12、jvm中空闲区域和活动区域是什么,如何运转的


13、循环依赖的对象是如何被gc回收的


javaweb相关


1、Redis为什么这么快


2、Redis的数据结构


3、缓存穿透、缓存击穿、缓存穿透、缓存并发、缓存降级是什么,遇到这些情况如何解决


4、为什么Redis是单线程的? 这样做的好处是什么


5、redis的持久化机制,生产环境如何选用,


6、redis的三种集群模式,这三种模式之间的互相通信,zookeeper在集群模式中起什么作用


7、redis的数据复制功能是什么


8、为什么使用redis分布式锁,还了解其他的分布式锁吗


9、mysql索引是什么


10、mysql myisam和innodb的区别,分别应用在哪些场景


11、如何知道你的查询索引会生效


12、mysql索引失效的情况,左模糊查询为什么会索引失效


13、mysql数据结构


14、mysql调优方面,为什么加上索引查询会快


15、mysql MVCC是什么,起什么作用


16、如何删除表、删除表之后是否能通过回滚恢复


17、binlog、Undo Log、undo log是什么


18、查询语句的执行顺序


19、一条更新语句的执行顺序


20、mysql有哪些锁(乐观锁悲观锁),select 时怎么加排它锁


21、分布式中高并发情况下,mybatis存储层如何优化,除了索引还能有哪些点进行优化


22、dubbo注册中心的原理,除了zk还能使用其他的当作注册中心吗


23、dubbo消费者和注册着之间交互的机制


24、你对消息队列的理解


25、kafka的架构组成


26、如何保证kafka topic只消费一次


27、kafka从哪方面调优


28、kafka的topic能被一个消费组中的多个消费者同时消费吗、可以多次消费topic吗


29、怎么样认为kafka是正常的


30、spring 的设计思想


31、如果让你设计spring 你会如何设计


32、项目中springcloud和dubbo选型,为什么选择dubbo


33、spring DI的理解


34、spring bean生命周期


35、谈谈你对spring中设计模式的理解


36、对spring ioc理解


37、aop的原理


38、Spring如何解决循环依赖


39、spring中有哪些方法使用了代理模式


40、springcloud各组件相关的使用


41、spring cjlib动态代理,jdk动态代理如何实现,


42、BeanFactory、ApplicationContext和FactoryBean的区别,


43、BeanPostProcessor和BeanFactoryPostProcessor什么区别


44、spring和springboot的区别、springboot加载xxx-stater的pom依赖的原理


45、springcloud各组件的了解


46、openfeign的实现原理,如果让你设计openfeign的基础功能,你如何设计


47、微服务的优点缺点


48、分布式事务的理解


49、对分布式缓存的认知


50、一致性hash算法了解吗


51、熟悉的锁,分别应用在哪些场景下


52、高并发下接口幂等是什么,如何解决


53、如何设计一个秒杀系统


其他

🌈🌈个人的优缺点:工作沟通、技能、业务相关的,不要说不相关的。
🌈🌈看过那些框架的源码,讲一讲


hr面

🌈🌈到达这一轮如果没有意外,你的offer肯定是百分比拿到。一定要对自己未来有个方向规划,切记!表现出强烈的求知欲、上进心是加分项。


结束语

🌈🌈以上就是我在面试中遇到的面试题,很多面试题都是重复的,我的博客中有部分题目以及深入挖掘的答案。以上内容希望能帮助到想找工作或者准备跳槽的人。


🌈🌈只有不断的自我提升,不断的努力,不断的踏出舒适圈,才会有更高的突破。种什么因得什么果。
相关文章
|
1月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
76 2
|
25天前
|
Java 程序员
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
小米,29岁程序员,分享了一次面试经历,详细解析了Java中&和&&的区别及应用场景,展示了扎实的基础知识和良好的应变能力,最终成功获得Offer。
63 14
|
1月前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
|
1月前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
|
1月前
|
存储 缓存 Oracle
Java I/O流面试之道
NIO的出现在于提高IO的速度,它相比传统的输入/输出流速度更快。NIO通过管道Channel和缓冲器Buffer来处理数据,可以把管道当成一个矿藏,缓冲器就是矿藏里的卡车。程序通过管道里的缓冲器进行数据交互,而不直接处理数据。程序要么从缓冲器获取数据,要么输入数据到缓冲器。
Java I/O流面试之道
|
1月前
|
Java 编译器 程序员
Java面试高频题:用最优解法算出2乘以8!
本文探讨了面试中一个看似简单的数学问题——如何高效计算2×8。从直接使用乘法、位运算优化、编译器优化、加法实现到大整数场景下的处理,全面解析了不同方法的原理和适用场景,帮助读者深入理解计算效率优化的重要性。
34 6
|
1月前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
87 2
|
1月前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
61 4
|
1月前
|
存储 Java 程序员
Java基础的灵魂——Object类方法详解(社招面试不踩坑)
本文介绍了Java中`Object`类的几个重要方法,包括`toString`、`equals`、`hashCode`、`finalize`、`clone`、`getClass`、`notify`和`wait`。这些方法是面试中的常考点,掌握它们有助于理解Java对象的行为和实现多线程编程。作者通过具体示例和应用场景,详细解析了每个方法的作用和重写技巧,帮助读者更好地应对面试和技术开发。
126 4