近期Java高级开发岗面试总结

本文是作者近期参与Java高级开发岗位面试的总结,涵盖了某移动通讯公司、知名金融公司、中型软件公司和安全相关软件公司的面试经历。面试重点包括Java的内存管理(如GC、内存溢出)、多线程、线程池、数据库优化、设计模式、Spring框架、网络协议、Redis和MQ等方面。面试官通常结合项目经验进行提问,强调实战应用和问题解决能力。面试让作者意识到不断学习和实践的重要性。

近期Java高级开发岗面试总结

 

某移动通讯公司

1. java三大特征,以及在代码方面的表现

2. 父类被那些访问修饰符修饰才能被继承?

3. String能被继承吗?

4. 操作String最高效的方式

5. String、Stringbuffer和Stringbuilder的区别

6. 内存溢出是怎么导致的?

7. 哪些对象是垃圾对象但是无法被回收?

8. 线程了解吗,创建线程的几种方式

9. 怎么去停止一个线程?

10. 创建线程池的方式?

11. 线程池都有哪些参数?

12. 什么时候要考虑设置最大线程数,或者说出于什么考虑要设置最大线程数?

13. 线程之间怎么通信?

14. 那不会产生死锁吗?怎么防止产生死锁

15. 怎么去调第三方的接口?

16. http的方法都是做什么用的,比如get,post,delete...

17. 用过微服务吗

18. 我们聊一下业务吧,你介绍一下你最近做的项目,从项目介绍到技术栈

19. 你们的**功能会有一个定时任务吧?那定时任务的话有这样一个场景,比如我每两分钟一个定时任务,肯定会部署多个服务,那我想只有一个服务去执行怎么做?

20. 那如果一个服务去执行了定时任务两分钟还没执行完,又轮到第二个执行任务了怎么办?

21. 你们项目是怎么部署的?

22. 你们没有k8s吗?

23. 你有什么要问的?

小结:这是工作三年后第一次面试,心里还是有些紧张的,有几个问题回答的不好,也罢,当时问hr说不是外包,提问环节问面试官了其实还是外包...

某知名金融公司

1. 自我介绍

2. 现在是在职的状态,为什么考虑换工作?

3. 职业规划是什么?

4. 职业规划中想发展哪方面?

5. 做个题,student表,两个字段,stu学生,class所属班级,统计班级学生大于50的班级个数

6. 先问一些基础的吧,GC了解吗?说一下GC的过程

7. 遇到过内存溢出吗,怎么发生的?

8. 遇到过full GC吗,怎么发现的,怎么解决

9. 生产上就一直看着日志看有没有发生GC吗?

10. 监控是怎么做的?以什么方式通知发生了full GC?

11. GC日志怎么看的?就用肉眼看吗?

12. 那怎么解决full GC?

13. 线程池用过吗,讲一下线程池的特点

14. 线程池参数都是什么意思

15. 你们用的哪种拒绝策略?怎么选择?

16. 线程池执行任务的过程

17. 还有哪些你擅长的 我没有问到的

18. 你了解过我们这个职位吗?

19. 你有什么要问的?

小结:视频面试中面试官在家办公,不苟言笑的样子很严肃,问GC比较多,整个过程面得很快,因为问的问题也不多,应该是着急面后面的面试者,在挑选。

某中型软件公司

1. 自我介绍

2. 用过多线程吗,哪些业务用到了多线程,为什么要用多线程,用多线程的好处、坏处

3. 用多线程时遇到过哪些问题,怎么解决的

4. 一个请求响应慢怎么排查问题

5. 类加载过程

6. GC算法,垃圾收集器,你们用的哪个收集器

7. 设计模式用过哪些?

8. 那了解过其他的设计模式吗?知道都是适用于什么场景吗?

9. 做过哪些SQL优化,缓存优化?(简历上写的有这些)

10. 说一下Redis数据结构及使用场景,Redis高并发常见的问题及解决方案吧(简历上写的有这些)

11. 使用MQ时是如何发现消息丢失的,怎么排查消息丢失的,最后是怎么解决的?

12. 你有什么要问的?

小结:整体上问的不难,但是有些东西我忘记了,比如,线程池在使用时遇到过哪些问题怎么解决的,这些和实际项目相关的,因为线程池我实际用的不多,所以这个问题答的不好;还有对于没用过的设计模式忘记了使用场景;MQ实际没有使用经验回答的也不好。但是一面过了,二面因为时间有冲突还待安排。

某安全相关软件公司

一面

1. 自我介绍

2. 介绍一下gc算法

3. 介绍一下类加载机制

4. 介绍一下双亲委派机制

5. 我们自己写的String类能被加载吗

6. 怎么自定义类加载器

7. 自定义了类加载器就能加载自定义路径下的类了吗

8. HashMap的底层原理

9. 为什么要用数组?

10. 用nginx做了什么?

11. 怎么配置反向代理(具体的配置)?

12. 用的哪种中间件容器(web容器)?

13. 数据库的四大特性是什么?

14. 对于隔离性有几种隔离级别,分别解决了什么问题?

15. spring提供的事务传播机制有几种分别是什么?

16. 线程池的参数

17. 线程池的核心线程数和最大线程数的关系

18. Redis哨兵模式的工作原理,怎么从剩余的slave中选举?

19. 用过哪些设计模式?

20. spring的都用到哪些设计模式,分别在哪些场景用到的?

21. spring aop用的什么代理模式?

22. 怎么理解静态代理和动态代理?

23. 说一下对IOC的理解,IOC解决了什么问题?

24. 读过哪些框架的源码?

25. spring MVC的执行流程?

26. 怎么在spring中实现一个拦截器?

27. mybatis的动态SQL都有哪些标签?

28. mybatis的插件机制(拦截器)了解过吗,怎么用的?

29. mybatis的分页原理,pagehelper插件的分页原理

30. 用过哪些RPC框架,dubbo底层用的什么通信技术?

31. netty熟悉吗

32. springboot的自动配置原理

33. 怎么自定义一个starter,步骤是什么?

34. 你有什么要问的?

二面

1. 介绍一下你做过的项目用的哪些技术?

2. 你做过性能优化?你说说JVM怎么优化的,缓存怎么优化的?

3. 为什么对JVM调优,怎么不用默认的,不是会自动增长吗?

4. 你们服务器是什么配置(硬件配置)?

5. http和HTTPS的区别,不要说加密和不加密

6. http的请求头,请求行,请求体的作用

7. 请求头都有哪些参数都是干什么用的?

8. 请求体是干嘛的?

9. 七层网络协议,每一层是干嘛的?

10. 数据库的三范式?

11. 你有什么要问的?

小结:这是一家做安全相关软件的公司,公司人不多,两次面试都过了,最后邀请去公司和公司合伙人聊聊,婉言拒绝了。其实二面我回答的不好,也过了,纳闷...估计是缺人吧。

总结

这几个都是招的Java高级开发,招聘JD上写的工资都是15K+,基本问的最多的就是jvm、GC、多线程、设计模式等,基本都是结合项目问的,整体问的不难,但是有的是实际项目中没有经历过,有些细节回答的不好,也是给我检验自己的机会吧,查漏补缺,一个完善自己的过程,毕竟一直学不去看学的如何也是不行的。

之前疫情严重的时候,就想着面试试一试,但是一直没有勇气去尝试,这几天终于突破了自己,毕竟三年没去面试了。这2个月我也帮公司面了十几个了,第一次当面试官,有时候还不知道如何考察面试者,只是搜几篇面试题去问,这样效果也不好。自己去面试,去了解别人是怎么问问题的,也是一个提高。

每一次跳槽、面试、挑公司都是一件很重要的事情,公司就是一个平台,找到一个好的平台很重要。

 

小编在学习过程中整理了一些学习资料,可以分享给做java的工程师朋友们,相互交流学习,需要的可以加入我的学习交流群 587675720 即可免费获取Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)

作者:dingyu002

来源:dingyu002

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处,以上就是我对这几次面试的总结,希望对你有帮助。欢迎点赞转发呀~.

绝对想你所想,超乎想象!够详细,够给力! 目录 1. Jvm内存空间结构是什么样的? 1 程序计数器 1 Java栈 1 本地方法栈 2 堆 2 方法区 3 2. Jvm堆内存的划分结构和优化 3 2.1. 原理 6 2.1.1. 年轻代 6 2.1.2. 年老代 6 2.1.3. 持久代 7 2.2. 参数说明 8 2.3. 疑问解答 9 2.4. 垃圾回收器选择 10 2.4.1. 串行收集器 10 2.4.2. 并行收集器(吞吐量优先) 10 2.4.3. 并发收集器(响应时间优先) 11 2.4.4. 其它垃圾回收参数 11 2.5. 辅助信息参数设置 12 2.6. 关于参数名称等 13 3. JVM服务参数调优实战 14 3.1. 大型网站服务器案例 14 3.2. 内部集成构建服务器案例 15 4. 常量池在jvm的哪个空间里边? 17 5. jvm垃圾回收是什么时候触发的? 17 5.1. 那究竟GC为我们做了什么操作呢? 17 5.1.1. Jvm怎么判断对象可以回收了? 18 5.2. 下面我们来看一下几种垃圾收集算法 18 5.2.1. 在JDK1.2之前,使用的是引用计数器算法, 18 5.2.2. 根搜索算法 19 5.2.3. 引用的分类 19 5.3. 方法区也是会被回收的 20 5.4. 下面我们来逐一介绍一下每个垃圾回收器。 22 5.4.1. 1、 Serial收集器 22 5.4.2. 2、 ParNew收集器 23 5.4.3. 3、 ParallelScavenge 23 5.4.4. 4、 ParallelOld 24 5.4.5. 5、 SerialOld 24 5.4.6. 6、CMS 24 5.4.7. 7、 GarbageFirst(G1 ) 26 6. 常量池如何触发的垃圾回收? 28 7. 垃圾回收从哪里开始检测树进行回收?根节点是什么? 28 7.1. 目前java中可作为GC Root的对象有 29 8. Redis怎么判断对象可以清理了? 29 9. Redis怎么提高命中率? 29 10. Finalize中调用垃圾回收方法,再调用方法会回收么? 29 11. Int进行自增操作,如何保证线程安全? 30 12. Int a=1是原子方法,布尔类型进行赋值是原子方法么? 30 12.1. 多线程原子操作的安全性 31 13. Cas怎么实现unsafe? 32 13.1. Unsafe 32 13.2. CAS 32 13.3. 由CAS分析AtomicInteger原理 33 13.4. CAS的缺点 35 14. Map数据结构? 35 14.1. 一、定义 36 14.2. 二、构造函数 36 14.3. 三、数据结构 36 14.4. 四、存储实现:put(key,vlaue) 38 14.5. 五、读取实现:get(key) 41 15. 一百万数据放Arraylist数组,怎么放? 在哪个代? 42 15.1.1. 调整数组容量 42 16. Hashmap和 concurrentHashmap除了线程安全 还有什么区别,put的时候是怎么处理的。 43 17. 数据库组合索引,储存在一个叶子节点还是多个? 44 17.1. 索引的利弊与如何判定,是否需要索引: 44 17.1.1. 索引的好处 44 17.1.2. 索引的弊端 44 17.1.3. 如何判定是否须要创建索引 44 17.2. 复合索引优化 45 17.3. 下面是一些常见的索引限制问题 45 17.3.1. 使用不等于操作符(<>, !=) 45 17.3.2. 使用 is null 或 is not null 45 17.3.3. 使用函数 45 17.3.4. 比较不匹配的数据类型 46 17.4. 关于索引的排序 46 18. 数据库没有orderby默认如何排序。 46 19. 分布式事务如何实现。 46 19.1. 1 事务/分布式事务 47 19.1.1. 1.1 事务 47 19.1.2. 1.2 分布式事务与 XA 规范 47 19.2. 2 两阶段提交协议 47 19.2.1. 2.1 预提交阶段 48 19.2.2. 2.2 提交阶段 48 19.3. 3 分布式事务应用框架 48 19.3.1. 3.1 角色 48 19.3.2. 3.2 交互时序 49 19.3.3. 3.3 关键点 50 19.3.4. 参考 50 20. Jvm底层源码 51 21. 二叉树怎么实现的? 51 22. Executourservice 数据结构。哪种只能执行一个线程。 Cache怎么实现的 fixed线程如果中断,线程回自己销毁么? 51 23. 栅栏的原理和实现。 51 23.1. 1. CyclicBarrier简介 51 23.2. 2. CyclicBarrier数据结构 52 23.3. 3. CyclicBarrier源码分析(基于JDK1.7.0_40) 52 23.3.1. 3.1 构造函数 52 23.3.2. 3.2 等待函数 53 23.4. 4. CyclicBarrier的使用示例 57 23.4.1. 示例1 57 23.4.2. 示例2 59 24. Blockingqueue有几种形式?各自的编码方式。 72 24.1. Queue接口 72 24.2. BlockingQueue接口 73 24.2.1. ArrayBlockingQueue 74 24.2.2. LinkedBlockingQueue 78 24.2.3. LinkedBlockingDeque(双向并发阻塞队列) 84 24.2.4. PriorityBlockingQueue(优先阻塞队列) 85 24.2.5. 总结一下阻塞队列 90 25. Tomcat 如何管理servlet? 90 26. Servlet生命周期 90 27. 没有缓存,如何实现领券并发操作? 92
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值