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

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

Java 核心概念

  1. equals 与 hashCode 的异同点在哪里?Java 的集合中又是如何使用它们的。
  2. 描述下 Java 中集合(Collections),接口(Interfaces),实现(Implementations)的概念。LinkedList 与 ArrayList 的区别是什么?
  3. 基础类型(Primitives)与封装类型(Wrappers)的区别在哪里?
  4. final 与 static 关键字可以用于哪里?它们的作用是什么?
  5. 阐述下 Java 中的访问描述符(Access Modifiers)。
  6. 描述下 String,StringBuilder 以及 StringBuffer 区别。
  7. 接口(Interface)与抽象类(Abstract Class)的区别在哪里。
  8. 覆盖(Overriding)与重载(OverLoading)的区别在哪里。
  9. 异常分为哪几种类型?以及所谓的handle or declare原则应该如何理解?
  10. 简述垃圾回收器的工作原理。
  11. 你是如何处理内存泄露或者栈溢出问题的?
  12. 如何构建不可变的类结构?关键点在哪里?
  13. 什么是 JIT 编译?

Hibernate / 数据库

  1. 请解释下 ORM。
  2. 简述下 Hibernate 的优劣特性。
  3. Hibernate 与 JPA 区别在哪?
  4. Hibernate 最新版提供了哪些特性?
  5. 什么是懒加载(Lazy Loading)?
  6. 什么是 N+1 难题?
  7. 介绍一些熟悉的 Hibernate 注释。
  8. 简介下 Hibernate Session 与 SessionFactory。
  9. Entity Beans 的状态有哪些。
  10. Hibernate 中的缓存分为几层。
  11. Hibernate 中事务的支持分为几级?
  12. 什么是乐观锁(Optimistic Locking)?
  13. 简述下 ACID 原则。
  14. 简述下数据库正则化(Normalizations)。
  15. 请介绍下你日常工作中优化慢查询(Slow Query)的策略。

Spring

  1. 新版的 Spring 中有哪些新特性?
  2. 介绍下 Spring 的优势与缺陷。
  3. 什么是控制反转(Inversion of Control)与依赖注入(Dependency Injection)?
  4. 你用过哪些 Spring 的模块?
  5. Spring 中是如何使用依赖注入的?
  6. Spring 中提供了几种自动注入的机制?
  7. 介绍下 Spring MVC。
  8. Spring 中 Scopes 有哪些?
  9. Spring 中 Bean 的生命周期包含哪些步骤?
  10. Spring Bean 与 EJB Bean 的区别在哪里?

其他主题

  1. 介绍下切面编程(Aspect Oriented Programming)。
  2. 概述下 GET 与 POST 的区别。
  3. Web Server、Web Container 与 Application Server 的区别是什么?
  4. 简要介绍下从浏览器输入 URL 开始到获取到请求界面之后 Java Web 应用中发生了什么。
  5. 什么是 N 层架构?
  6. 微服务(MicroServices)与巨石型应用(Monolithic Applications)之间的区别在哪里?
  7. 你知道哪些商业级设计模式?
  8. 你是如何测试一个应用的?知道哪些测试框架?
  9. 你是如何测试单个方法的?
  10. 在你的职业生涯中,算得上最困难的技术挑战是什么?
  11. 什么是领域驱动开发(Domain Driven Development)?
  12. 介绍下一些你最爱的 IDE 的常用插件。
  13. 除了 IDE 之外,你的日常工作中还会用到哪些工具?
  14. 你使用什么版本管理工具?
  15. 分支(Branch)与标签(Tag)之间的区别在哪里?
  16. 你常用的持续集成(Continuous Integration)、静态代码分析(Static Code Analysis)工具有哪些?

写在最后:欢迎留言讨论,加关注,持续更新!

Java 进阶面试问题必备的更多相关文章

  1. 【Java进阶面试系列之一】哥们,你们的系统架构中为什么要引入消息中间件?

    转: [Java进阶面试系列之一]哥们,你们的系统架构中为什么要引入消息中间件? **这篇文章开始,我们把消息中间件这块高频的面试题给大家说一下,也会涵盖一些MQ中间件常见的技术问题. 这里大家可以关 ...

  2. 现代Java进阶之路必备技能——2019 版

    Java技术的学习阶段有三 第1个是java基础,比如对集合类,并发,IO,JVM,内存模型,泛型,异常,反射,等有深入了解. 第2个是全面的互联网技术相关知识,比如redis,mogodb,ngin ...

  3. Java进阶面试问题列表

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

  4. Java进阶面试

    消息中间件: 1.你们公司生产环境用的是什么消息中间件? https://mp.weixin.qq.com/s?__biz=MzU0OTk3ODQ3Ng==&mid=2247484149&am ...

  5. 【搞定 Java 并发面试】面试最常问的 Java 并发进阶常见面试题总结!

    本文为 SnailClimb 的原创,目前已经收录自我开源的 JavaGuide 中(61.5 k Star![Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识.觉得内容不错 ...

  6. 玩转算法系列--图论精讲 面试升职必备(Java版)

    第1章 和bobo老师一起,玩转图论算法欢迎大家来到我的新课程:<玩转图论算法>.在这个课程中,我们将一起完整学习图论领域的经典算法,培养大家的图论建模能力.通过这个课程的学习,你将能够真 ...

  7. java 美团面试常见问题总

    一 基础篇 1. System.out.println(3|9)输出什么? 2. 说一下转发(Forward)和重定向(Redirect)的区别 3. 在浏览器中输入url地址到显示主页的过程,整个过 ...

  8. 大型Java进阶专题(一) 前言

    前言 ​ 各位读者好,本系列为Java进阶专题,为那些有一定工作经验,做了多年业务的码农,希望突破技术瓶颈,但没有形成系统的Java只是体系,缺乏清晰的提升方法和学习路径的人,比如作者本人.该课题的是 ...

  9. Java进阶(三十四)Integer与int的种种比较你知道多少?

    Java进阶(三十四)Integer与int的种种比较你知道多少? 前言 如果面试官问Integer与int的区别:估计大多数人只会说到两点:Ingeter是int的包装类,注意是一个类:int的初值 ...

随机推荐

  1. 帆软 联合 创始人 数据可视化 中国 发展 FineReport FineBI

    丧心病狂!帆软公司的成立竟源于一个被初恋抛弃的程序员 - 大数据-炼数成金-Dataguru专业数据分析社区http://dataguru.cn/article-7500-1.html 帆软联合创始人 ...

  2. ISO/IEC 9899:2011 条款6.10.3——宏替换

    6.10.3 宏替换 约束 1.两个替换列表是相同的,当且仅当两个替换列表中的预处理符记都具有相同的数.次序.拼写,以及空白分隔符,这里所有的空白分隔符都认为是相同的. 2.当前被定义为一个类似对象的 ...

  3. 根据 sitemap 的规则[0],当前页面 [pages/index/index] 将被索引

    sitemap 的索引提示是默认开启的,如需要关闭 sitemap 的索引提示,可在小程序项目配置文件 project.config.json 的 setting 中配置字段 checkSiteMap ...

  4. 使用Termux,在手机上做nodejs编程,运行nodejs程序。

    如果你是一名nodejs开发者,是否想过以下问题:在手机上运行nodejs程序?用手机当nodejs服务器?在手机上做nodejs编程?YES!使用Termux,以上都可以做到! 下面展示如何实现这个 ...

  5. [LeetCode] 235. Lowest Common Ancestor of a Binary Search Tree 二叉搜索树的最近公共祖先

    Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...

  6. 【ARM-Linux开发】【CUDA开发】【深度学习与神经网络】Jetson Tx2安装相关之三

    JetPack(Jetson SDK)是一个按需的一体化软件包,捆绑了NVIDIA®Jetson嵌入式平台的开发人员软件.JetPack 3.0包括对Jetson TX2 , Jetson TX1和J ...

  7. QT源码分析:QTcpServer

    最近在看有关IO复用方面的内容,自己也用标准c++库实现了select模型.iocp模型.poll模型.回过头来很想了解QT的socket是基于什么模型来实现的,所以看了QT关于TcpServer实现 ...

  8. 在ObjectARX中创建OPM项目的时候出现 MIDL1012: argument illegal for switch / header错误的解决方式

    修改为 这样新建的带有MIDL项目就不会提示错误这个错误了. 如果你已经建立好项目,可以尝试修改MIDL的配置,头文件可能是.h没有文件名,所以出现MIDL1012错误,修改为项目名称的.h即可,保持 ...

  9. 10 Spring框架--基于注解和xml的配置的应用案例

    1.项目结构 2.基于xml配置的项目 <1>账户的业务层接口及其实现类 IAccountService.java package lucky.service; import lucky. ...

  10. springboot2.1.8使用poi导出数据生成excel(.xlsx)文件

    前言:在实际开发中经常需要将数据库的数据导出成excel文件,poi方式则是其中一种较为常用的导出框架.简单读取excel文件在之前的一篇有说明 本项目实现需求:user发出一个导出student信息 ...