尚学堂 Java 程序员面试题集大全 201901

Citation preview

尚学堂 Java 面试题大全及参考答案

前言 本题集由尚学堂学员整理,列举了众多 IT 公司面试真题,对应聘 Java 程序 员职位的常见考点和知识体系都进行的分类和归纳整理。

本题集适合应聘 Java 和 JavaEE 职位的程序员作为面试复习、学习和强化的 资料,也适合其他程序员作为拓展读物进行阅读。

本题集包含了常见的算法、面试题,也包含了新的高级技术,比如:微服务 架构等技术的面试题目。本题集非常全面,对于工作 1-5 年左右的 java 程序员 面试有非常好的指导作用。

大家也可以访问(直接在线观看最新版的面试题): www.bjsxt.com/javamianshiti.html

1

尚学堂 Java 面试题大全及参考答案

卓越班(保底年薪 18 万) 中国最高端的课程,没有之一 1. 大学生高端复合人才成长方案,保底年薪 18 万。 1.

JAVA 专业,1000 课

2. Python 专业,500 课 3. 大数据专业,500 课 4. 人工智能专业,500 课 四个专业都要学,从零开始 2000 小时,成为高端人才,打下一生技术基础, 不再是低端码农。

2. 扫一扫,咨询详情:

百战小程序,扫描即学习

访问官网 www.itbaizhan.cn 2

尚学堂 Java 面试题大全及参考答案

目录 第一篇 面试题汇总 ......................................................................................................... 9 一:Java 基础、语法 .............................................................................................. 9 二:String 相关 .................................................................................................. 120 三:集合............................................................................................................... 136 四:多线程 .......................................................................................................... 156 五:IO 流……………………………………………………………………………………..190 六:网络编程 ...................................................................................................... 205 七:异常处理 ...................................................................................................... 213 八:Web 方面相关 ............................................................................................ 224 九:设计模式 ...................................................................................................... 317 十:高级框架 ...................................................................................................... 335 十一:微服务框架 .............................................................................................. 389 十二:数据库 ...................................................................................................... 405 十三:JVM .......................................................................................................... 436 十四:Linux 操作 ............................................................................................... 445 十五:算法分析及手写代码 ............................................................................. 460 第二篇 就业实战和面试技巧篇 ............................................................................... 521 一:招聘程序员的内幕...................................................................................... 521 1. 面试和相亲 .......................................................................................................... 521 2. 为什么要招聘程序员?为什么绝大部分总能找到工作? .............................. 522

3

尚学堂 Java 面试题大全及参考答案

3. 为什么有人会找不到工作? .............................................................................. 523 4. 公司最喜欢什么样的程序员? .......................................................................... 525 5. 我到底值多少钱? .............................................................................................. 526 6. 找工作最重要的是什么?薪水?机会? .............................................................. 529 7. 学习很多技术,现在的公司不用,不是亏了吗? .......................................... 530

二:找工作前需要准备的杀手锏 ..................................................................... 531 1. 职场的十大基本素质.......................................................................................... 531 2. 公司调研 ............................................................................................................. 536 3. 项目调研 ............................................................................................................. 537 4. 基础技术准备...................................................................................................... 537 5. 热门技术准备...................................................................................................... 538 6. 更高端技术准备.................................................................................................. 539 7. 本专业之外的技术准备...................................................................................... 539 8. 共同话题准备...................................................................................................... 540 9. 自我模拟面试和对练.......................................................................................... 541

三:面试准备 ...................................................................................................... 541 1.简历的作用 ............................................................................................................ 541 2.简历两个灵魂 ........................................................................................................ 541 3.一份完美的简历(6 大要素) .................................................................................. 542 4.简历的常见错误 .................................................................................................... 547 5. 注册招聘网站和简历投递.................................................................................. 547

4

尚学堂 Java 面试题大全及参考答案

6. 接面试电话如何应对.......................................................................................... 548 7. 去公司之前的准备.............................................................................................. 549 8. 笔试 ..................................................................................................................... 549

四:面试............................................................................................................... 550 1. 面试时,为什么没必要紧张? .......................................................................... 550 2. 面试中的礼仪 ...................................................................................................... 550 3. 常见技术面试场景分析 ...................................................................................... 551 4. 十大非技术面试问题及策略 .............................................................................. 552 5.面试后一定要总结 ................................................................................................ 557

第三篇:热门专业学习之路...................................................................................... 557 一:JAVA 学习知识点明细以及配套视频 ...................................................... 557 1. JAVASE ................................................................................................................. 558 2. 数据库 .................................................................................................................. 559 3. 网页设计和开发 .................................................................................................. 560 4. Servlet/ JSP 和企业级项目开发........................................................................ 561 5. SSM 框架(Spring、Spring MVC、Mybatis) ........................................... 561 6. 各种 JAVA 新技术和大型项目的整合 ............................................................... 562 7. 微服务架构 .......................................................................................................... 562 8. 一定要做一个大项目! ...................................................................................... 563

二:JAVA 基础如何学习,才能又快又稳? .................................................. 563 三:Python 学习知识点以及配套视频 .......................................................... 566

5

尚学堂 Java 面试题大全及参考答案

1. Python 基础 ........................................................................................................ 566 2. Linux 环境编程基础............................................................................................ 567 3. 数据库编程基础 .................................................................................................. 567 4. 网页编程基础 ...................................................................................................... 568 5. Django Web 开发框架 ...................................................................................... 568 6. 做一个项目 .......................................................................................................... 568 7. Tornado 异步编程框架 ..................................................................................... 569 8. Python 爬虫开发 ................................................................................................ 569

四:人工智能学习知识点和配套视频............................................................. 570 1. 机器学习 .............................................................................................................. 570 2. 深度学习 .............................................................................................................. 571 3. Python 数据分析模块 ........................................................................................ 572 4. Spark MLlib 机器学习库 ................................................................................... 573 5. 做一个人工智能项目 .......................................................................................... 573 6. 数学 ...................................................................................................................... 574

五:H5 前端和移动 APP 开发知识点和配套视频........................................ 575 1.WEB 前端快速入门 .............................................................................................. 575 2.JavaScript 基础与深入解析 ................................................................................ 576 3.jQuery 应用与项目开发 ...................................................................................... 576 4. PHP、数据库编程与设计 ................................................................................... 577 5. Http 服务于 Ajax 编程 ....................................................................................... 577

6

尚学堂 Java 面试题大全及参考答案

6. 做一个阶段项目 .................................................................................................. 577 7. H5 新特性与移动端开发 .................................................................................... 578 8. 高级框架 .............................................................................................................. 578 9. 微信小程序 .......................................................................................................... 580

六:大数据和云计算学习知识点和配套视频 ................................................ 580 1. 大数据学习之前“必看” .................................................................................. 581 2. Hadoop 框架 ...................................................................................................... 583 3. 数据仓库技术 ...................................................................................................... 583 4. Spark 内存计算框架 ........................................................................................... 584 5. 机器学习和数据挖掘 .......................................................................................... 584 6. Storm 流式计算框架 .......................................................................................... 585 7. 云计算之 Openstack 和 docker ...................................................................... 585 8. 做一个大数据项目 .............................................................................................. 586

七:区块链学习知识点和配套视频 ................................................................. 586 1.区块链行业介绍 .................................................................................................... 587 2.Golang 从入门到高级 ......................................................................................... 587 3.数据库操作和 Golang Web ............................................................................... 587 4. Golang 实战项目 ............................................................................................... 587 5. 密码学 .................................................................................................................. 587 6. 共识算法 .............................................................................................................. 588 7. Solidity ................................................................................................................ 588

7

尚学堂 Java 面试题大全及参考答案

8. 以太坊原理 .......................................................................................................... 588 9. 以太坊客户端 ...................................................................................................... 588 10. 去中心换拍卖系统 DApp ................................................................................ 589 11. 超级账本和 DApp 实战 ................................................................................... 589 12. C++编程快速入门 ............................................................................................ 589 13. 比特币................................................................................................................ 589 14. EOS..................................................................................................................... 590 15. 动手,项目实战................................................................................................ 590

八:100 套毕业设计和课程设计项目案例和配套视频 ............................... 591 1. 关于各种开发软件的使用说明和配套视频 ...................................................... 591 2. 第一季 20 套项目源代码和配套视频 ............................................................... 593

九:7U 职场软实力课程和配套视频 .............................................................. 597 1. 职场软实力是什么? .......................................................................................... 597 2. 形象气质和社交礼仪 .......................................................................................... 598 3. 声音素质 .............................................................................................................. 599 4. 情商 ...................................................................................................................... 599 5. 沟通力 .................................................................................................................. 600 6. 说服力 .................................................................................................................. 600 7. 说服力之销售 ...................................................................................................... 601 8. 演讲力 .................................................................................................................. 601 9. 领导力 .................................................................................................................. 602

8

尚学堂 Java 面试题大全及参考答案

第一篇 面试题汇总 一:Java 基础、语法 1. Java 跨平台原理(字节码文件、虚拟机)

C/C++语言都直接编译成针对特定平台机器码。如果要跨平台,需要使用相 应的编译器重新编译。 Java 源程序(.java)要先编译成与平台无关的字节码文件(.class),然后字 节码文件再解释成机器码运行。解释是通过 Java 虚拟机来执行的。 字节码文件不面向任何具体平台,只面向虚拟机。 Java 虚拟机是可运行 Java 字节码文件的虚拟计算机。不同平台的虚拟机是 不同的,但它们都提供了相同的接口。 Java 语言具有一次编译,到处运行的特点。就是说编译后的.class 可以跨平 9

尚学堂 Java 面试题大全及参考答案

台运行,前提是该平台具有相应的 Java 虚拟机。但是性能比 C/C++要低。 Java 的跨平台原理决定了其性能没有 C/C++高。

2. Java 的安全性 语言层次的安全性主要体现在: Java 取消了强大但又危险的指针,而代之以引用。由于指针可进行移动运算, 指针可随便指向一个内存区域,而不管这个区域是否可用,这样做是危险的, 因为原来这个内存地址可能存储着重要数据或者是其他程序运行所占用的, 并且使用指针也容易数组越界。 垃圾回收机制:不需要程序员直接控制内存回收,由垃圾回收器在后台自动 回收不再使用的内存。避免程序忘记及时回收,导致内存泄露。避免程序错

10

尚学堂 Java 面试题大全及参考答案

误回收程序核心类库的内存,导致系统崩溃。 异常处理机制:Java 异常机制主要依赖于 try、catch、finally、throw、throws 五个关键字。 强制类型转换:只有在满足强制转换规则的情况下才能强转成功。 底层的安全性可以从以下方面来说明 Java 在字节码的传输过程中使用了公开密钥加密机制(PKC)。 在运行环境提供了四级安全性保障机制: 字节码校验器 -类装载器 -运行时内存布局 -文件访问限制

3. Java 三大版本 Java2 平台包括标准版(J2SE)、企业版(J2EE)和微缩版(J2ME)三个版 本: Standard Edition(标准版) J2SE 包含那些构成 Java 语言核心的类。 比如:数据库连接、接口定义、输入/输出、网络编程 Enterprise Edition(企业版) J2EE 包含 J2SE 中的类,并且还包含用于开发 企业级应用的类。 比如 servlet、JSP、XML、事务控制 Micro Edition(微缩版) J2ME 包含 J2SE 中一部分类,用于消费类电子产品 的软件开发。 比如:呼机、智能卡、手机、PDA、机顶盒 他们的范围是:J2SE 包含于 J2EE 中,J2ME 包含了 J2SE 的核心类,但新添 加了一些专有类

11

尚学堂 Java 面试题大全及参考答案

应用场合,API 的覆盖范围各不相同。

4. 什么是 JVM?什么是 JDK? 什么是 JRE? JVM:JVM 是 Java Virtual Machine(Java 虚拟机)的缩写,它是整个 java 实现跨平台的最核心的部分,所有的 java 程序会首先被编译为.class 的类文 件,这种类文件可以在虚拟机上执行,也就是说 class 并不直接与机器的操 作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释 给本地系统执行。JVM 是 Java 平台的基础,和实际的机器一样,它也有自 己的指令集,并且在运行时操作不同的内存区域。 JVM 通过抽象操作系统 和 CPU 结构,提供了一种与平台无关的代码执行方法,即与特殊的实现方 法、主机硬件、主机操作系统无关。JVM 的主要工作是解释自己的指令集(即 字节码)到 CPU 的指令集或对应的系统调用,保护用户免被恶意程序骚 扰。 JVM 对上层的 Java 源文件是不关心的,它关注的只是由源文件生成的 类文件(.class 文件) JRE:JRE 是 java runtime environment(java 运行环境)的缩写。光有 JVM 还不能让 class 文件执行,因为在解释 class 的时候 JVM 需要调用解释所需 要的类库 lib。在 JDK 的安装目录里你可以找到 jre 目录,里面有两个文件 夹 bin 和 lib,在这里可以认为 bin 里的就是 jvm,lib 中则是 jvm 工作所需要 的类库,而 jvm 和 lib 和起来就称为 jre。所以,在你写完 java 程序编译 成.class 之后,你可以把这个.class 文件和 jre 一起打包发给朋友,这样你的 朋友就可以运行你写程序了(jre 里有运行.class 的 java.exe)。JRE 是 Sun 公司发布的一个更大的系统,它里面就有一个 JVM。JRE 就与具体的 CPU

12

尚学堂 Java 面试题大全及参考答案

结构和操作系统有关,是运行 Java 程序必不可少的(除非用其他一些编译 环境编译成.exe 可执行文件……),JRE 的地位就象一台 PC 机一样,我们写 好的 Win32 应用程序需要操作系统帮我们运行,同样的,我们编写的 Java 程序也必须要 JRE 才能运行。 JDK:JDK 是 java development kit(java 开发工具包)的缩写。每个学 java 的人都会先在机器上装一个 JDK,那 让我们看一下 JDK 的安装目录。在目 录下面有六个文件夹、一个 src 类库源码压缩包、和其他几个声明文件。其 中,真正在运行 java 时起作用的是以下四个文件夹:bin、include、lib、jre。 现在我们可以看出这样一个关系,JDK 包含 JRE,而 JRE 包含 JVM。 bin : 最主要的是编译器( javac.exe) include : java 和 JVM 交互用的头文件 lib:类库 jre:java 运行环境 (注意:这里的 bin、lib 文件夹和 jre 里的 bin、lib 是不同的)总的来说 JDK 是用于 java 程序的开发,而 jre 则是只能运行 class 而没有编译的功能。 eclipse、idea 等其他 IDE 有自己的编译器而不是用 JDK bin 目录中自带的, 所以在安装时你会发现他们只要求你选 jre 路径就 ok 了。 JDK,JRE,JVM 三者关系概括如下: jdk 是 JAVA 程序开发时用的开发工具包,其内部也有 JRE 运行环境 JRE。 JRE 是 JAVA 程序运行时需要的运行环境,就是说如果你光是运行 JAVA 程 序而不是去搞开发的话,只安装 JRE 就能运行已经存在的 JAVA 程序了。JDk、

13

尚学堂 Java 面试题大全及参考答案

JRE 内部都包含 JAVA 虚拟机 JVM,JAVA 虚拟机内部包含许多应用程序的 类的解释器和类加载器等等。

5. Java 三种注释类型 共有单行注释、多行注释、文档注释 3 种注释类型。使用如下: 单行注释,采用“//”方式.只能注释一行代码。如://类成员变量 多行注释,采用“/*...*/”方式,可注释多行代码,其中不允许出现嵌套。 如: /*System.out.println("a"); System.out.println("b"); System.out.println("c");*/ 文档注释,采用“/**...*/”方式。如: /** * 子类

Dog

* @author Administrator * */ public class Dog extends Animal{}

14

尚学堂 Java 面试题大全及参考答案

6. 8 种基本数据类型及其字节数 数据类型

关键字

字节数

byte

1

short

2

int

4

long

8

float

4

double

8

布尔型

boolean

1(位)

字符型

char

2

整数型 数值型 浮点型

7. i++和++i 的异同之处 共同点: 1、i++和++i 都是变量自增 1,都等价于 i=i+1 2、如果 i++,++i 是一条单独的语句,两者没有任何区别 3、i++和++i 的使用仅仅针对变量。 5++和++5 会报错,因为 5 不是变量。 不同点: 如果 i++,++i 不是一条单独的语句,他们就有区别 i++ :先运算后增 1。如:

int x=5; int y=x++; System.out.println("x="+x+", y="+y); 15

尚学堂 Java 面试题大全及参考答案

//以上代码运行后输出结果为:x=6, y=5

++i : 先增 1 后运算。如:

int x=5; int y=++x; System.out.println("x="+x+", y="+y); //以上代码运行后输出结果为:x=6, y=6

8. &和&&的区别和联系,|和||的区别和联系 &和&&的联系(共同点): &和&&都可以用作逻辑与运算符,但是要看使用时的具体条件来决定。 操作数 1&操作数 2,操作数 1&&操作数 2, 表达式 1&表达式 2,表达式 1&&表达式 2, 情况 1:当上述的操作数是 boolean 类型变量时,&和&&都可以用作逻辑 与运算符。 情况 2:当上述的表达式结果是 boolean 类型变量时,&和&&都可以用作 逻辑与运算符。 表示逻辑与(and),当运算符两边的表达式的结果或操作数都为 true 时,整 个运算结果才为 true,否则,只要有一方为 false,结果都为 false。 &和&&的区别(不同点): (1)、&逻辑运算符称为逻辑与运算符,&&逻辑运算符称为短路与运算符, 16

尚学堂 Java 面试题大全及参考答案

也可叫逻辑与运算符。 对于&:无论任何情况,&两边的操作数或表达式都会参与计算。 对于&&:当&&左边的操作数为 false 或左边表达式结果为 false 时, &&右边的操作数或表达式将不参与计算,此时最终结果都为 false。 综上所述,如果逻辑与运算的第一个操作数是 false 或第一个表达式的 结果为 false 时,对于第二个操作数或表达式是否进行运算,对最终的结果 没有影响,结果肯定是 false。推介平时多使用&&,因为它效率更高些。 &还可以用作位运算符。当&两边操作数或两边表达式的结果不是 boolean 类型时,&用于按位与运算符的操作。 |和||的区别和联系与&和&&的区别和联系类似

9. 用最有效率的方法算出 2 乘以 8 等于多少 使用位运算来实现效率最高。位运算符是对操作数以二进制比特位为单 位进行操作和运算,操作数和结果都是整型数。对于位运算符“