前言
金三银四的跳槽黄金季,一贯不爱挪窝的程序员也活跃起来,要说面试程序员烦,公司也烦,面试官也烦,但没办法,鱼龙混杂的人太多,理论好写不了代码的程序员着实让公司头疼,于是面试的题目也愈来愈刁钻!java
不过凡事都有两面性,面试也是激励程序员多看面试题,掌握知识不是吗?程序员

我这里整理了互联网公司面试常问的一些面试题,后文有提供【答案在末尾获取,以及更多面试专项资料领取】面试
本文将要讲到的主题:如何准备Java高级的技术面试。算法

一. 换位思考下,若是你面试官,你会怎么作
- 只能经过简历和面试来衡量,别无他法。若是某位大牛确认能力很行,但面试时没法充分地自证能力,那对不起了,过不了,现实就这样。
- 若是面试官因为能力不行,招进来一个大忽悠,那估计会被领导骂。并且不再会被让面试了,给领导的印象就很差了。因此不能评主观印象,而是会有些客观标准,具体而言,就是从多个方面问些题目,答好答坏就看候选人的。
二. 整体上说下准备面试的几个方面点
在面试时,应当综合准备 java Core,数据库,框架,分布式等方面的题目。我发现很多面试者走了弯路,他们或者干脆不许备,准备时可能方法不到位,单准备一个方面。好比只准备了算法题,在这方面回答很好,但其它方面就一无所知了。数据库
因此说,没有所谓的必定能成功的面试秘籍,但有能够帮助提高成功率的准备方法。编程
切记,面试前必定得准备,不然成功的可能性很低,准备时,得综合看各方面的点。至于每一个点要到什么程度,后文会讲到。设计模式
面向对象编程的基本理念与核心设计思想浏览器
- 解释下多态性(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程序员面试涉及到的绝大部分面试题及答案作成了文档和架构视频资料免费分享给你们(包括Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术资料),但愿能帮助到您面试前的复习且找到一个好的工做,也节省你们在网上搜索资料的时间来学习,也能够关注我一下之后会有更多干货分享。缓存
资料领取方式:架构
欢迎加入个人私人QQ群架构华山论剑:836442475【点击领取面试资料】(大牛汇集地)一块儿交流学习探讨!
一块儿学习Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术的能够来一下个人QQ群架构华山论剑:836442475,好友都会在里面交流,分享一些学习的方法和须要注意的小细节,天天准时讲10年架构师分享经验,Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术

