Java进阶面试问题列表
面向对象编程的基本理念与核心设计思想
解释下多态性(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学习交流QQ群:589809992 我们一起学Java!
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 的生命周期包含哪些步骤?
Java学习交流QQ群:589809992 我们一起学Java!
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技术相关的干货。如果你喜欢我的分享,可以用微信搜索“Java团长”或者“javatuanzhang”关注。
Java进阶面试问题列表的更多相关文章
- 【Java进阶面试系列之一】哥们,你们的系统架构中为什么要引入消息中间件?
转: [Java进阶面试系列之一]哥们,你们的系统架构中为什么要引入消息中间件? **这篇文章开始,我们把消息中间件这块高频的面试题给大家说一下,也会涵盖一些MQ中间件常见的技术问题. 这里大家可以关 ...
- Java进阶面试题列表
面向对象编程的基本理念与核心设计思想 解释下多态性(polymorphism),封装性(encapsulation),内聚(cohesion)以及耦合(coupling). 继承(Inheritanc ...
- Java 进阶面试问题必备
面向对象编程的基本理念与核心设计思想 解释下多态性(polymorphism),封装性(encapsulation),内聚(cohesion)以及耦合(coupling). 继承(Inheritanc ...
- Java进阶面试
消息中间件: 1.你们公司生产环境用的是什么消息中间件? https://mp.weixin.qq.com/s?__biz=MzU0OTk3ODQ3Ng==&mid=2247484149&am ...
- 转:最近5年133个Java面试问题列表
最近5年133个Java面试问题列表 Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来 ...
- 近5年133个Java面试问题列表
Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来越高级,面试官问的问题也更深入. 在我 ...
- 最近5年183个Java面试问题列表及答案[最全]
Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别(String 类型和 StringBuffer 类型的主要性能区别其实在于 Stri ...
- 133个Java面试问题列表
转载: 133个Java面试问题列表 Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来 ...
- 最近5年133个Java面试问题列表
Java 面试随着时间的改变而改变.在过去的日子里,当你知道 String 和 StringBuilder 的区别就能让你直接进入第二轮面试,但是现在问题变得越来越高级,面试官问的问题也更深入. 在我 ...
随机推荐
- LeetCode:棒球比赛【682】
LeetCode:棒球比赛[682] 题目描述 你现在是棒球比赛记录员.给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数.2. " ...
- Java8中时间日期库的20个常用使用示例
除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务示例来学习如何使用Java 8的这套API.Java对日期, ...
- Mysql 慢查询日志配置
查询日志 1.主配置文件下对添加参数.重启生效. vim /etc/my.cnf 注:主要用于查看开发程序执行时间. 注:log_slow_queries = /tmp/mysql.slow # ...
- java鲁棒性(健壮性)
java能检测编译和运行时的错误 java自己操作内存减少了内存出错的可能 java实现了真数组,避免了覆盖数据的可能 Java不支持指针操作,大大减少了错误发生的可能性 ... 备注: Java能运 ...
- 20145201 《Java程序设计》第三周学习总结
20145201 <Java程序设计>第三周学习总结 教材学习内容总结 本周学习了课本第四.五章内容,即认识对象和对象封装. 第四章 认识对象 4.1类与对象 定义类 要产生对象必须先定义 ...
- OpenGL核心技术之Gamma校正
笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,国家专利发明人;已出版书籍:<手把手教你/2.2次幂.Gamma校正后的暗红色就会成为(0.5,0.0 ...
- Hibernate : Query.list()、Query.iterator()的区别
Query上有list()与iterator()方法,两者的差别在于list()方法在读取数据时,并不会利用到快取,而是直接再向数据库查询,而iterator()则将读取到的数据写到快取,并于读取时再 ...
- 织梦导航 currentstyle 点击li添加class类 样式
<!--导航开始--> <div class="global_nav_wrap"> <ul class="nav nav-pills&quo ...
- PAT1037. Magic Coupon (25)
#include <iostream> #include <algorithm> #include <vector> using namespace std; in ...
- 基础的JavaScript函数
基础的JavaScript函数 1.首字母大写 2.去除数组重复项 3.数组的排序 4.闭包 1. 把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字(使用JavaScript的map函 ...