Java服务端开发面试题汇总

       近期在换工作中,参加了形形色色的公司的面试,现在将聚焦到面试的具体内容上。在这里需要强调的是,我参与的面试是面向中高级开发的工程师;对于某一个问题的展开往往都是由浅到深,以及个人在领域中的应用的理解。这里我没有给出答案。当然面试的时候面试官处理固定的会提问的一些东西外,简历中的技能栏可能会是提问的重点区域。

以下是我总结的可能会问到的问题,但是每一个问题都可以继续深挖三到四层,所以,如果你想拿到高薪和去大厂,那么你必须静下心去研究这些东西。网上百度到的答案估计只能让你成为一个初中级的工程师。所以,想换工作的朋友可以先去准备一下。

java基础部分:

数据结构与算法:

  • 在这一部分中除了要了解常用的java数据结构和原理外,还需要知道java集合框架原理。
  • 并且这一部分需要结合并发来回答,确保线程安全以及原子性操作等。常会提问到的如:队列和栈的相互实现;树的遍历(前序遍历和后序遍历),这里不一定是二叉树;HashMap的原理等。在数据结构中需要尤为注意的是哈希表。
  • 在算法部分:往往需要考虑到时间复杂度或者空间复杂度,面试官往往要求你将复杂度降到最低,有事什么需要让你考虑内存空间问题;比如考察排序算法、以及排序算法的变形(去数组中最大的前n个值、奇偶分别放在数组的左右两侧等)

java并发编程:(java.util.concurrent;java.util.concurrent.atomic;java.util.concurrent.locks)

  • java并发编程开发有很多规范和实现方式,最基础的要知道如何自定义多线程。如何编写线程安全的单例模式。
  • 需要熟悉java并发编程中java提供的工具类。如上所示。
  • 并发编程中如何加锁、死锁问题的解决,都是考察的范围。
  • 线程间通信、原子类、线程同步。
  • 线程的内存模型。
  • 线程池的使用

java8新特性:

流、lambda表达式、函数式编程等新特性需要熟悉。

其他基础问题:

  • 涉及到“==”与equal()的区别
  • 代码块、静态块、构造块、静态变量的执行顺序问题
  • 运行时异常与一般异常的异同
  • jdk的代理

JVM:

java的内存模型、回收机制和算法、内存管理以及调试工具等。这一部分建议不要轻易去说自己熟悉;因为jvm调优问题是一个很高大上的问题。

数据库:

数据库部分的话,问题并不会太深入;因为作为一个java程序员并不太需要关注DB上的问题,但是你需要知道数据库的索引、视图、以及SQL调优的一些方法。

javaweb框架:

  • spring3/4/5的异同,新增功能;
  • AOP实现原理、IOC实现原理;
  • 设计模式
  • 有没有研读过框架源码
  • hibernate与mybatis的异同;
  • 什么是JPA/SPRINGJPA /Hibernate的区别;
  • mybatis的实现原理及源码
  • 聊一个自己最熟悉或者擅长的框架,从原理源码分析、到跟其他相同框架的比较、到实际应用中遇到的问题的分析。
  • 微服务框架和分布式技术。
  • 中间件技术和缓存技术。

 

版权声明:程序员胖胖胖虎阿 发表于 2023年8月31日 上午3:16。
转载请注明:Java服务端开发面试题汇总 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...