Java 进阶面试问题必备
面向对象编程的基本理念与核心设计思想
- 解释下多态性(polymorphism),封装性(encapsulation),内聚(cohesion)以及耦合(coupling)。
- 继承(Inheritance)与聚合(Aggregation)的区别在哪里。
- 你是如何理解干净的代码(Clean Code)与技术负载(Technical Debt)的。
- 描述下常用的重构技巧。
- 阐述下 SOLID 原则。
- 其他的譬如 KISS,DRY,YAGNI 等原则又是什么含义。
- 什么是设计模式(Design Patterns)?你知道哪些设计模式?
- 你有了解过存在哪些反模式(Anti-Patterns)吗?
- 你会如何设计登陆舰/数学表达式计算程序/一条龙?
- 你知道哪些基本的排序算法,它们的计算复杂度如何?在给定数据的情况下你会倾向于使用哪种算法呢?
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 编译?
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进阶面试系列之一】哥们,你们的系统架构中为什么要引入消息中间件?
转: [Java进阶面试系列之一]哥们,你们的系统架构中为什么要引入消息中间件? **这篇文章开始,我们把消息中间件这块高频的面试题给大家说一下,也会涵盖一些MQ中间件常见的技术问题. 这里大家可以关 ...
- 现代Java进阶之路必备技能——2019 版
Java技术的学习阶段有三 第1个是java基础,比如对集合类,并发,IO,JVM,内存模型,泛型,异常,反射,等有深入了解. 第2个是全面的互联网技术相关知识,比如redis,mogodb,ngin ...
- Java进阶面试问题列表
面向对象编程的基本理念与核心设计思想 解释下多态性(polymorphism),封装性(encapsulation),内聚(cohesion)以及耦合(coupling). 继承(Inheritanc ...
- Java进阶面试
消息中间件: 1.你们公司生产环境用的是什么消息中间件? https://mp.weixin.qq.com/s?__biz=MzU0OTk3ODQ3Ng==&mid=2247484149&am ...
- 【搞定 Java 并发面试】面试最常问的 Java 并发进阶常见面试题总结!
本文为 SnailClimb 的原创,目前已经收录自我开源的 JavaGuide 中(61.5 k Star![Java学习+面试指南] 一份涵盖大部分Java程序员所需要掌握的核心知识.觉得内容不错 ...
- 玩转算法系列--图论精讲 面试升职必备(Java版)
第1章 和bobo老师一起,玩转图论算法欢迎大家来到我的新课程:<玩转图论算法>.在这个课程中,我们将一起完整学习图论领域的经典算法,培养大家的图论建模能力.通过这个课程的学习,你将能够真 ...
- java 美团面试常见问题总
一 基础篇 1. System.out.println(3|9)输出什么? 2. 说一下转发(Forward)和重定向(Redirect)的区别 3. 在浏览器中输入url地址到显示主页的过程,整个过 ...
- 大型Java进阶专题(一) 前言
前言 各位读者好,本系列为Java进阶专题,为那些有一定工作经验,做了多年业务的码农,希望突破技术瓶颈,但没有形成系统的Java只是体系,缺乏清晰的提升方法和学习路径的人,比如作者本人.该课题的是 ...
- Java进阶(三十四)Integer与int的种种比较你知道多少?
Java进阶(三十四)Integer与int的种种比较你知道多少? 前言 如果面试官问Integer与int的区别:估计大多数人只会说到两点:Ingeter是int的包装类,注意是一个类:int的初值 ...
随机推荐
- 帆软 联合 创始人 数据可视化 中国 发展 FineReport FineBI
丧心病狂!帆软公司的成立竟源于一个被初恋抛弃的程序员 - 大数据-炼数成金-Dataguru专业数据分析社区http://dataguru.cn/article-7500-1.html 帆软联合创始人 ...
- ISO/IEC 9899:2011 条款6.10.3——宏替换
6.10.3 宏替换 约束 1.两个替换列表是相同的,当且仅当两个替换列表中的预处理符记都具有相同的数.次序.拼写,以及空白分隔符,这里所有的空白分隔符都认为是相同的. 2.当前被定义为一个类似对象的 ...
- 根据 sitemap 的规则[0],当前页面 [pages/index/index] 将被索引
sitemap 的索引提示是默认开启的,如需要关闭 sitemap 的索引提示,可在小程序项目配置文件 project.config.json 的 setting 中配置字段 checkSiteMap ...
- 使用Termux,在手机上做nodejs编程,运行nodejs程序。
如果你是一名nodejs开发者,是否想过以下问题:在手机上运行nodejs程序?用手机当nodejs服务器?在手机上做nodejs编程?YES!使用Termux,以上都可以做到! 下面展示如何实现这个 ...
- [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 ...
- 【ARM-Linux开发】【CUDA开发】【深度学习与神经网络】Jetson Tx2安装相关之三
JetPack(Jetson SDK)是一个按需的一体化软件包,捆绑了NVIDIA®Jetson嵌入式平台的开发人员软件.JetPack 3.0包括对Jetson TX2 , Jetson TX1和J ...
- QT源码分析:QTcpServer
最近在看有关IO复用方面的内容,自己也用标准c++库实现了select模型.iocp模型.poll模型.回过头来很想了解QT的socket是基于什么模型来实现的,所以看了QT关于TcpServer实现 ...
- 在ObjectARX中创建OPM项目的时候出现 MIDL1012: argument illegal for switch / header错误的解决方式
修改为 这样新建的带有MIDL项目就不会提示错误这个错误了. 如果你已经建立好项目,可以尝试修改MIDL的配置,头文件可能是.h没有文件名,所以出现MIDL1012错误,修改为项目名称的.h即可,保持 ...
- 10 Spring框架--基于注解和xml的配置的应用案例
1.项目结构 2.基于xml配置的项目 <1>账户的业务层接口及其实现类 IAccountService.java package lucky.service; import lucky. ...
- springboot2.1.8使用poi导出数据生成excel(.xlsx)文件
前言:在实际开发中经常需要将数据库的数据导出成excel文件,poi方式则是其中一种较为常用的导出框架.简单读取excel文件在之前的一篇有说明 本项目实现需求:user发出一个导出student信息 ...