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 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进阶面试题列表的更多相关文章
- Java进阶面试题大集合-offer不再是问题
Java基础 1.List 和 Set 的区别 2.HashSet 是如何保证不重复的 3.HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安全)? 4.HashMap ...
- Java进阶面试问题列表
面向对象编程的基本理念与核心设计思想 解释下多态性(polymorphism),封装性(encapsulation),内聚(cohesion)以及耦合(coupling). 继承(Inheritanc ...
- Java 线程面试题 Top 50
--> Java 线程面试题 Top 50 html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;line-height:1. ...
- 31道Java核心面试题,一次性打包送给你
先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...
- 万字长文,62道Java核心面试题,一次性打包送给积极向上的你
先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员.本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...
- 【转载】 Java线程面试题 Top 50
Java线程面试题 Top 50 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员 的欢迎.大多数待遇丰厚的J ...
- java常见面试题及答案 1-10(基础篇)
java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...
- Java线程面试题 Top 50 (转载)
转载自:http://www.cnblogs.com/dolphin0520/p/3958019.html 原文链接:http://www.importnew.com/12773.html 本文由 ...
- Java线程面试题 Top 50
转自:http://www.importnew.com/12773.html 不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题.Java语言一个重要的特点就是内置了对并发的支持,让Java ...
随机推荐
- Maven 本地打war包
Maven是个很好用的管理工具,不经能够管理jar,还能实现打包. 这里讲解Maven 本地打包,服务器打包,可以全部交给jenkins去完成的. 用Maven打包,先在eclipse装Maven插件 ...
- Android——远程存储器存储:JDK方式和Volley框架的get和post
注意:要搭建好环境,运行 用volley方法时要把包导入project下的模块下的libs目录下 package com.example.chenshuai.myapplication; import ...
- 腾讯云CentOS7.0使用yum安装mysql
背景: 今天才申请了腾讯云+校园计划的1元服务器,(https://www.qcloud.com/event/qcloudSchool)安装了Centos7.0,在安装mysql的时候,使用yum l ...
- 15.5.26-linq to ef多级外链查询
方法一: var query = db.Test.Where(x => true) .Include(x => x.ColB.Select(s => s.ColBRelated)) ...
- Microsoft.AspNet.Identity.EntityFramework/IdentityDbContext.cs
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; ...
- 一、安装MYSQL
数据库就是数据的仓库.MYSQL数据库软件它也是一个独立的软件.它是和PHP配合最好的一种数据库.MYSQL数据库也可以作为其它编程语言的数据源. MYSQL的官方网站:http://www.mysq ...
- 纯css 404
<section class="center"> <article> <h1 class="header"> 404< ...
- 在CentOS 6.4中支持exfat格式的U盘
CentOS系列一直没有默认支持使用exfat格式的大容量U盘. 可以通过添加fuse-exfat模块来支持.根据网上资料,整理如下: 1.下载fuse-exfat支持软件: exfat支持是通过fu ...
- PCL点云分割(1)
点云分割是根据空间,几何和纹理等特征对点云进行划分,使得同一划分内的点云拥有相似的特征,点云的有效分割往往是许多应用的前提,例如逆向工作,CAD领域对零件的不同扫描表面进行分割,然后才能更好的进行空洞 ...
- maven工程如何引用css和js文件
工程目录结构如下图: 目的: 在index.jsp中引用hello.js和base.css文件 实现: 在web.xml中,新增<servlet-mapping> <serv ...