面向对象编程的基本理念与核心设计思想

  • 解释下多态性(polymorphism),封装性(encapsulation),内聚(cohesion)以及耦合(coupling)。

  • 继承(Inheritance)与聚合(Aggregation)的区别在哪里。

  • 你是如何理解干净的代码(Clean Code)与技术负载(Technical Debt)的。

  • 描述下常用的重构技巧。

  • 阐述下 SOLID 原则。

  • 其他的譬如 KISS,DRY,YAGNI 等原则又是什么含义。

  • 什么是设计模式(Design Patterns)?你知道哪些设计模式?

  • 你有了解过存在哪些反模式(Anti-Patterns)吗?

  • 你会如何设计登陆舰/数学表达式计算程序/一条龙?

  • 你知道哪些基本的排序算法,它们的计算复杂度如何?在给定数据的情况下你会倾向于使用哪种算法呢?

  • 尝试编写如下代码:

    • 计算指定数字的阶乘
    • 开发 Fizz Buzz 小游戏
    • 倒转句子中的单词
    • 回文字符串检测
    • 枚举给定字符串的所有排列组合

Java 核心概念

  • equals 与 hashCode 的异同点在哪里?Java 的集合中又是如何使用它们的。

  • 描述下 Java 中集合(Collections),接口(Interfaces),实现(Implementations)的概念。LinkedList 与 ArrayList 的区别是什么?

  • 基础类型(Primitives)与封装类型(Wrappers)的区别在哪里?

  • final 与 static 关键字可以用于哪里?它们的作用是什么?

  • 阐述下 Java 中的访问描述符(Access Modifiers)。

  • 描述下 String,StringBuilder 以及 StringBuffer 区别。

  • 接口(Interface)与抽象类(Abstract Class)的区别在哪里。

  • 覆盖(Overriding)与重载(OverLoading)的区别在哪里。

  • 异常分为哪几种类型?以及所谓的handle or declare原则应该如何理解?

  • 简述垃圾回收器的工作原理。

  • 你是如何处理内存泄露或者栈溢出问题的?

  • 如何构建不可变的类结构?关键点在哪里?

  • 什么是 JIT 编译?

  • Java 8 / Java 7 为我们提供了什么新功能?即将到来的 Java 9 又带来了怎样的新功能?


Hibernate / 数据库

  • 请解释下 ORM。

  • 简述下 Hibernate 的优劣特性。

  • Hibernate 与 JPA 区别在哪?

  • Hibernate 最新版提供了哪些特性?

  • 什么是懒加载(Lazy Loading)?

  • 什么是 N+1 难题?

  • 介绍一些熟悉的 Hibernate 注释。

  • 简介下 Hibernate Session 与 SessionFactory。

  • Entity Beans 的状态有哪些。

  • Hibernate 中的缓存分为几层。

Hibernate 中事务的支持分为几级?

  • 什么是乐观锁(Optimistic Locking)?

  • 简述下 ACID 原则。

  • 简述下数据库正则化(Normalizations)。

  • 请介绍下你日常工作中优化慢查询(Slow Query)的策略。


Spring

  • 新版的 Spring 中有哪些新特性?

  • 介绍下 Spring 的优势与缺陷。

  • 什么是控制反转(Inversion of Control)与依赖注入(Dependency Injection)?

  • 你用过哪些 Spring 的模块?

  • Spring 中是如何使用依赖注入的?

  • Spring 中提供了几种自动注入的机制?

  • 介绍下 Spring MVC。

  • Spring 中 Scopes 有哪些?

  • Spring 中 Bean 的生命周期包含哪些步骤?

  • Spring Bean 与 EJB Bean 的区别在哪里?


其他主题

  • 介绍下切面编程(Aspect Oriented Programming)。

  • 概述下 GET 与 POST 的区别。

  • Web Server、Web Container 与 Application Server 的区别是什么?

  • 简要介绍下从浏览器输入 URL 开始到获取到请求界面之后 Java Web 应用中发生了什么。

  • 什么是 N 层架构?

  • 微服务(MicroServices)与巨石型应用(Monolithic Applications)之间的区别在哪里?

  • 你知道哪些商业级设计模式?

  • 你是如何测试一个应用的?知道哪些测试框架?

  • 你是如何测试单个方法的?

  • 在你的职业生涯中,算得上最困难的技术挑战是什么?

  • 什么是领域驱动开发(Domain Driven Development)?

  • 介绍下一些你最爱的 IDE 的常用插件。

  • 除了 IDE 之外,你的日常工作中还会用到哪些工具?

  • 你使用什么版本管理工具?

  • 分支(Branch)与标签(Tag)之间的区别在哪里?

  • 你常用的持续集成(Continuous Integration)、静态代码分析(Static Code Analysis)工具有哪些?

Java进阶面试题列表的更多相关文章

  1. Java进阶面试题大集合-offer不再是问题

    Java基础 1.List 和 Set 的区别 2.HashSet 是如何保证不重复的 3.HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安全)? 4.HashMap ...

  2. Java进阶面试问题列表

    面向对象编程的基本理念与核心设计思想 解释下多态性(polymorphism),封装性(encapsulation),内聚(cohesion)以及耦合(coupling). 继承(Inheritanc ...

  3. Java 线程面试题 Top 50

    --> Java 线程面试题 Top 50 html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;line-height:1. ...

  4. 31道Java核心面试题,一次性打包送给你

    先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...

  5. 万字长文,62道Java核心面试题,一次性打包送给积极向上的你

    先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...

  6. 【转载】 Java线程面试题 Top 50

    Java线程面试题 Top 50 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员 的欢迎.大多数待遇丰厚的J ...

  7. java常见面试题及答案 1-10(基础篇)

    java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...

  8. Java线程面试题 Top 50 (转载)

    转载自:http://www.cnblogs.com/dolphin0520/p/3958019.html 原文链接:http://www.importnew.com/12773.html   本文由 ...

  9. Java线程面试题 Top 50

    转自:http://www.importnew.com/12773.html 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java ...

随机推荐

  1. 【Unity笔记】寻路导航用NavMeshObstacle做动态阻挡

    通常情况下,静态的场景中,给场景物体静态标记中勾选Navigation Static后,在导航界面进行导航网格的烘培,可以得到一个静态的导航网格. 但是由于导航网格是静态烘焙好了的,游戏中动态生成的物 ...

  2. js读取本地txt文件中的json数据

    list.txt内容 [ {"optionKey":"1", "optionValue":"Canon in D"}, ...

  3. if else练习 (解一元二次方程)

    public class cccc { /** * @param args */ public static void main(String[] args) { int a=10,b=11,c=12 ...

  4. strtok的基本使用方法

    理论知识自己能够百度这里直接上代码 代码的内容是 HDU(杭电)-1106-排序 排序 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 655 ...

  5. 升级 Elasticsearch 集群数量实战记录

    搜索引擎 升级 Elasticsearch 集群数量实战记录 现在线上有一个elasticsearch集群搜索服务有三台elasticsearch实例(es1.es2.es3),打算将其升级为5台(增 ...

  6. 【转】MySQL count(*)速度慢优化

    select count(*)是MySQL中用于统计记录行数最常用的方法. count方法可以返回表内精确的行数,每执行一次都会进行一次全表扫描, 以避免由于其他连接进行delete和insert引起 ...

  7. Qt的一些鲜为人知但是非常有用的小功能

    1. Q_GADGET:不需要从QObject继承就可以使用Qt的Meta Object功能  2. Q_ENUMS:对枚举对象进行反射(reflection)  3. Q_SIGNAL:不需要sig ...

  8. 关于Unity中DOTween插件的使用(专题一)

    DOTween flash里面的一个概念叫补间动画,DOTween就是干这个事情的. 补间动画:在1秒钟之内从A点移动到B点,在这个之间会把动画补间补好. 当我们安装好DOTween后,它就会提供很多 ...

  9. 关于Unity中坐标系的种类

    坐标空间 1:物体空间: 3D物体自己的坐标空间 一般设计时几何体以中心为原点,人物以双脚为原点; 2: 世界空间: 3D物体在场景中的世界坐标, 整个游戏场景的空间; 3: 摄像机空间: 以观察摄像 ...

  10. 查看linux系统配置(centos/redhat)

    一:查看cpu more /proc/cpuinfo | grep "model name" grep "model name" /proc/cpuinfo 如 ...