【干货】Java岗面试考点大合集

本文是根据个人阿里面试经验,为你们整理Java程序猿面试所需的知识体系(持续更新中)。html

第一部分:计算机基础

互联网大厂都至关重视程序员的基本功,也就是计算机基础知识。一个程序员能走多远、爬多高,很大程度上取决于基本功是否扎实。对于应届生而言,大都比较缺少实战项目经验,虽然会有必定的项目经验,但这些课程设计、实验室项目的质量与公司实际的项目有着巨大的差距。所以,基础知识便成为面试考量的一大重点,并且基础扎实的程序员可塑性比较高,作什么都能比较容易快速上手。java

计算机基础包含以下几门课程,相信计算机专业的同窗确定都已经学过。但互联网公司面试的考点可能和大家期末考试的考点有一些不一样,我都作了整理。程序员

1. 计算机网络

大学课程中的计算机网络通常都按照OSI七层参考模型介绍,然而因为互联网公司的特性,他们更加关注平常开发所涉及到的传输层和应用层,因此须要重点掌握传输层和应用层中所涉及到的全部知识点。web

考点

  • 传输层的做用
  • 传输层复用和分用的含义
  • 传输层和网络层的区别
  • UDP协议的特色
  • UDP协议的报文结构
  • TCP协议的特色
  • TCP协议的报文结构
  • TCP三次握手过程
  • TCP四次挥手过程
  • TCP可靠传输是如何实现的
  • 中止等待协议
  • 滑动窗口协议
  • TCP的流量控制
  • TCP拥塞控制
  • HTTP协议
    • HTTP工做流程
    • HTTP请求格式
    • HTTP 1.1中的8种请求方式
    • HTTP响应格式
    • HTTP中重要的请求头和响应头字段
    • HTTP经常使用状态码及其含义
  • HTTPS协议
    • HTTPS协议与HTTP协议的区别
    • HTTPS协议的工做流程

资料整理

2. 数据结构

熟练掌握数据结构是程序员最最最基本的素养,在实际开发中选择合适的数据结构将极大影响程序的效率。面试官通常并不会直接问数据结构的问题,而是经过出一些包含数据结构的算法题来考察你对数据结构的理解程度以及在实际项目中是否可以灵活应用。你能够经过刷算法题来提高这部分能力,推荐《剑指offer》和《程序员面试金典》(注意是金典!)。不少公司的算法题库都选自这两本书。面试

固然,刷这两本书的目的并非让你死记硬背题目,题目变幻无穷,面试官能够随意改变。刷算法题最重要的是培养解决问题的思路和解决实际问题的能力。在刷题的过程当中要多多总结,再次强调,切忌死记硬背!算法

3. 算法

和数据结构同样,算法通常也经过具体的算法题来考察,你也能够经过刷《剑指offer》和《程序员面试金典》中的算法题来提升这方面的技能。但在刷这些算法题以前,你须要掌握几类基础的算法,并理解他们解决问题的思路(这才是最为关键的)。这些算法我已经在下面整理。数据库

4. 操做系统

考点

  • 操做系统的四个特性。
  • 操做系统的主要功能。
  • 进程的有哪几种状态,状态转换图,及致使转换的事件。
  • 进程与线程的区别。
  • 进程通讯的几种方式。
  • 进程同步的几种方式
  • 用户态和核心态的区别。
  • 死锁的概念,致使死锁的缘由。
  • 致使死锁的四个必要条件。
  • 处理死锁的四个方式。
  • 预防死锁的方法、避免死锁的方法。
  • 进程调度算法。
  • 内存连续分配方式采用的几种算法及各自优劣。
  • 基本分页储存管理方式。
  • 基本分段储存管理方式。
  • 分段分页方式的比较各自优缺点。
  • 几种页面置换算法,会算所需换页数
  • 虚拟内存的定义及实现方式。

资料整理

5. 数据库

考点

  • 什么是索引?
  • 索引的分类
  • 索引的优缺点分析
  • 什么时候须要使用索引?什么时候无需使用索引?
  • 什么是事务?
  • 事务的四大特性
  • 数据库三大范式
  • 数据库有哪些表链接?

资料整理


第二部分:Java

做为一名合格的Java程序员,仅了解如何使用Java是远远不够的。你可以熟练使用Java只能说明你已经成为一名合格的码农,可以利用Java实现某些功能。而公司做为盈利机构,须要用最少的资源实现效益最大化,这就须要程序员具有高质量代码的能力,而可否写出高质量代码取决于你对技术背后原理的理解程度。只有在理解Java背后的原理,你才能根据Java的特性,写出更加高效的代码。这在实际业务中是很是有价值的事情。互联网大厂服务海量用户,更加注重系统的性能,也更加注重程序员对原理的理解。编程

关于Java的基础知识和如何使用,这里我就不提了,随便一本Java书籍都有详细的介绍。这里我整理了Java原理性的知识点,这些知识点将会成为你面试的加分项。设计模式

1. Java虚拟机

考点

  • Java虚拟机内存模型特色和做用
    • 程序计数器
    • Java虚拟机栈
    • 本地方法区
    • 方法区
  • 对象建立过程
  • 对象访问过程
  • 对象的内存结构
  • 垃圾收集算法
  • 如何断定哪些对象须要回收?
  • 对象内存分配策略
  • 分配担保机制
  • 垃圾收集器的比较
  • Class文件结构
  • 类加载的时机
  • 类加载过程
  • 双亲委派模型

知识点资源整理


2. Java并发编程

考点

  • 什么是死锁?如何避免死锁?
  • 什么是重排序?
  • volatile有哪些特性?
  • 什么是内存可见性?
  • volatile为何可以保证内存可见性?
  • 中断机制
  • 线程通讯有哪些方式?
  • 线程池的做用?
  • ThreadPoolExecutor如何使用?
  • 如何设置线程池的大小?
  • 如何保证线程安全?
  • JDK 1.6哪些对锁作了哪些优化?

知识点资源整理


3. Java 容器考点及资料整理


4. Java IO 考点及资料整理


5. Java其余知识点汇总

相关文章
相关标签/搜索