Java 进阶面试问题列表 翻译自 Java developer interview questions: The hard part ,从属于笔者的 Java入门与工程实践 系列。最近公司打算招几个 Java 开发人员,正巧在 Reddit 上看到了该文,顺手翻译了一波。只是单纯的问题列表,可能较水,慎进。

面向对象编程的基本理念与核心设计思想
- 解释下多态性(polymorphism),封装性(encapsulation),内聚(cohesion)以及耦合(coupling)。 
- 继承(Inheritance)与聚合(Aggregation)的区别在哪里。 
- 你是如何理解干净的代码(Clean Code)与技术负载(Technical Debt)的。 
- 描述下常用的重构技巧。 
- 阐述下 SOLID 原则。 
- 其他的譬如 KISS,DRY,YAGNI 等原则又是什么含义。 
- 什么是设计模式(Design Patterns)?你知道哪些设计模式? 
- 你有了解过存在哪些反模式(Anti-Patterns)吗? 
- 你会如何设计登陆舰/数学表达式计算程序/一条龙? 
- 你知道哪些基本的排序算法,它们的计算复杂度如何?在给定数据的情况下你会倾向于使用哪种算法呢? 
- 尝试编写如下代码: 

