🌈🌈一个毕业两年的双非本科的小小程序员的冲击历程,拿到了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肯定是百分比拿到。一定要对自己未来有个方向规划,切记!表现出强烈的求知欲、上进心是加分项。
结束语
🌈🌈以上就是我在面试中遇到的面试题,很多面试题都是重复的,我的博客中有部分题目以及深入挖掘的答案。以上内容希望能帮助到想找工作或者准备跳槽的人。
🌈🌈只有不断的自我提升,不断的努力,不断的踏出舒适圈,才会有更高的突破。种什么因得什么果。