Java 进阶面试问题列表
h9120cxu21
8年前
<p><img src="https://simg.open-open.com/show/8ff8b01c3a8c1b8c76cedb7851677826.png"></p> <h2>面向对象编程的基本理念与核心设计思想</h2> <ul> <li> <p>解释下多态性(polymorphism),封装性(encapsulation),内聚(cohesion)以及耦合(coupling)。</p> </li> <li> <p>继承(Inheritance)与聚合(Aggregation)的区别在哪里。</p> </li> <li> <p>你是如何理解干净的代码(Clean Code)与技术负载(Technical Debt)的。</p> </li> <li> <p>描述下常用的重构技巧。</p> </li> <li> <p>阐述下 SOLID 原则。</p> </li> <li> <p>其他的譬如 KISS,DRY,YAGNI 等原则又是什么含义。</p> </li> <li> <p>什么是设计模式(Design Patterns)?你知道哪些设计模式?</p> </li> <li> <p>你有了解过存在哪些反模式(Anti-Patterns)吗?</p> </li> <li> <p>你会如何设计登陆舰/数学表达式计算程序/一条龙?</p> </li> <li> <p>你知道哪些基本的排序算法,它们的计算复杂度如何?在给定数据的情况下你会倾向于使用哪种算法呢?</p> </li> <li> <p>尝试编写如下代码:</p> <ul> <li> <p>计算指定数字的阶乘</p> </li> <li> <p>开发 Fizz Buzz 小游戏</p> </li> <li> <p>倒转句子中的单词</p> </li> <li> <p>回文字符串检测</p> </li> <li> <p>枚举给定字符串的所有排列组合</p> </li> </ul> </li> </ul> <h2>Java 核心概念</h2> <ul> <li> <p>equals 与 hashCode 的异同点在哪里?Java 的集合中又是如何使用它们的。</p> </li> <li> <p>描述下 Java 中集合(Collections),接口(Interfaces),实现(Implementations)的概念。LinkedList 与 ArrayList 的区别是什么?</p> </li> <li> <p>基础类型(Primitives)与封装类型(Wrappers)的区别在哪里?</p> </li> <li> <p>final 与 static 关键字可以用于哪里?它们的作用是什么?</p> </li> <li> <p>阐述下 Java 中的访问描述符(Access Modifiers)。</p> </li> <li> <p>描述下 String,StringBuilder 以及 StringBuffer 区别。</p> </li> <li> <p>接口(Interface)与抽象类(Abstract Class)的区别在哪里。</p> </li> <li> <p>覆盖(Overriding)与重载(OverLoading)的区别在哪里。</p> </li> <li> <p>异常分为哪几种类型?以及所谓的handle or declare原则应该如何理解?</p> </li> <li> <p>简述垃圾回收器的工作原理。</p> </li> <li> <p>你是如何处理内存泄露或者栈溢出问题的?</p> </li> <li> <p>如何构建不可变的类结构?关键点在哪里?</p> </li> <li> <p>什么是 JIT 编译?</p> </li> <li> <p>Java 8 / Java 7 为我们提供了什么新功能?即将到来的 Java 9 又带来了怎样的新功能?</p> </li> </ul> <h2>Hibernate / 数据库</h2> <ul> <li> <p>请解释下 ORM。</p> </li> <li> <p>简述下 Hibernate 的优劣特性。</p> </li> <li> <p>Hibernate 与 JPA 区别在哪?</p> </li> <li> <p>Hibernate 最新版提供了哪些特性?</p> </li> <li> <p>什么是懒加载(Lazy Loading)?</p> </li> <li> <p>什么是 N+1 难题?</p> </li> <li> <p>介绍一些熟悉的 Hibernate 注释。</p> </li> <li> <p>简介下 Hibernate Session 与 SessionFactory。</p> </li> <li> <p>Entity Beans 的状态有哪些。</p> </li> <li> <p>Hibernate 中的缓存分为几层。</p> </li> <li> <p>Hibernate 中事务的支持分为几级?</p> </li> <li> <p>什么是乐观锁(Optimistic Locking)?</p> </li> <li> <p>简述下 ACID 原则。</p> </li> <li> <p>简述下数据库正则化(Normalizations)。</p> </li> <li> <p>请介绍下你日常工作中优化慢查询(Slow Query)的策略。</p> </li> </ul> <h2>Spring</h2> <ul> <li> <p>新版的 Spring 中有哪些新特性?</p> </li> <li> <p>介绍下 Spring 的优势与缺陷。</p> </li> <li> <p>什么是控制反转(Inversion of Control)与依赖注入(Dependency Injection)?</p> </li> <li> <p>你用过哪些 Spring 的模块?</p> </li> <li> <p>Spring 中是如何使用依赖注入的?</p> </li> <li> <p>Spring 中提供了几种自动注入的机制?</p> </li> <li> <p>介绍下 Spring MVC。</p> </li> <li> <p>Spring 中 Scopes 有哪些?</p> </li> <li> <p>Spring 中 Bean 的生命周期包含哪些步骤?</p> </li> <li> <p>Spring Bean 与 EJB Bean 的区别在哪里?</p> </li> </ul> <h2>其他主题</h2> <ul> <li> <p>介绍下切面编程(Aspect Oriented Programming)。</p> </li> <li> <p>概述下 GET 与 POST 的区别。</p> </li> <li> <p>Web Server、Web Container 与 Application Server 的区别是什么?</p> </li> <li> <p>简要介绍下从浏览器输入 URL 开始到获取到请求界面之后 Java Web 应用中发生了什么。</p> </li> <li> <p>什么是 N 层架构?</p> </li> <li> <p>微服务(MicroServices)与巨石型应用(Monolithic Applications)之间的区别在哪里?</p> </li> <li> <p>你知道哪些商业级设计模式?</p> </li> <li> <p>你是如何测试一个应用的?知道哪些测试框架?</p> </li> <li> <p>你是如何测试单个方法的?</p> </li> <li> <p>在你的职业生涯中,算得上最困难的技术挑战是什么?</p> </li> <li> <p>什么是领域驱动开发(Domain Driven Development)?</p> </li> <li> <p>介绍下一些你最爱的 IDE 的常用插件。</p> </li> <li> <p>除了 IDE 之外,你的日常工作中还会用到哪些工具?</p> </li> <li> <p>你使用什么版本管理工具?</p> </li> <li> <p>分支(Branch)与标签(Tag)之间的区别在哪里?</p> </li> <li> <p>你常用的持续集成(Continuous Integration)、静态代码分析(Static Code Analysis)工具有哪些?</p> </li> </ul> <p> </p> <p>来自:https://zhuanlan.zhihu.com/p/24910702</p> <p> </p>