互联网大厂面试题:这些面试都会吗?就想要40k?

前言

本套Java面试题大全总共分为以下这十三个模块:

Java基础知识面试题

Java异常面试题

JVM面试题

Spring面试题

Spring MVC面试题

Spring Boot面试题

Spring Cloud面试题

MyBatis面试题

Redis面试题

Dubbo面试题

Tomcat面试题

ZooKeeper面试题

Netty面试题

一、Java基础知识面试题

1、Java概述

何为编程?

什么是Java?

jdk1.5之后的三大版本?

JVM、JRE和JDK的关系?

什么是跨平台性?原理是什么?

Java语言有哪些特点?

什么是字节码?采用字节码的最大好处是什么?

什么是Java程序的主类?应用程序和小程序的主类有何不同?

Java应用程序与小程序之间有那些差别?

Java和C++的区别?

Oracle JDK 和 OpenJDK 的对比?

2、基础语法

①. 数据类型

Java有哪些数据类型

switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上

用最有效率的方法计算 2 乘以 8

Math.round(11.5) 等于多少?Math.round(-11.5)等于多少

float f=3.4;是否正确

short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗

②. 编码

Java语言采用何种编码方案?有何特点?

③. 注释

什么Java注释

④. 访问修饰符

访问修饰符 public,private,protected,以及不写(默认)时的区别

⑤. 运算符

&和&&的区别

⑥. 关键字

Java 有没有 goto

final 有什么用?

final finally finalize区别

this关键字的用法

super关键字的用法

this与super的区别

static存在的主要意义

static的独特之处

static应用场景

static注意事项

⑦. 流程控制语句

break ,continue ,return 的区别及作用

在 Java 中,如何跳出当前的多重嵌套循环

3、面向对象

①. 面向对象概述

面向对象和面向过程的区别

②. 面向对象三大特性

面向对象的特征有哪些方面

什么是多态机制?Java语言是如何实现多态的?

面向对象五大基本原则是什么(可选)

③. 类与接口

抽象类和接口的对比

普通类和抽象类有哪些区别?

抽象类能使用 final 修饰吗?

创建一个对象用什么关键字?对象实例与对象引用有何不同?

④. 变量与方法

成员变量与局部变量的区别有哪些

在Java中定义一个不做事且没有参数的构造方法的作用

在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?

一个类的构造方法的作用是什么?若一个类没有声明构造方法,改程序能正确执行吗?为什么?

构造方法有哪些特性?

静态变量和实例变量区别

静态变量与普通变量区别

静态方法和实例方法有何不同?

在一个静态方法内调用一个非静态成员为什么是非法的?

什么是方法的返回值?返回值的作用是什么?

⑤. 内部类

什么是内部类?

内部类的分类有哪些

内部类的优点

内部类有哪些应用场景

局部内部类和匿名内部类访问局部变量的时候,为什么变量必须要加上final?

内部类相关,看程序说出运行结果

⑥. 重写与重载

构造器(constructor)是否可被重写(override)

重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?

⑦. 对象相等判断

== 和 equals 的区别是什么

hashCode 与 equals (重要)

对象的相等与指向他们的引用相等,两者有什么不同?

⑧. 值传递

当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递

为什么 Java 中只有值传递

值传递和引用传递有什么区别

⑨. Java包

JDK 中常用的包有哪些

import java和javax有什么区别

4、IO流

java 中 IO 流分为几种?

BIO,NIO,AIO 有什么区别?

Files的常用方法都有哪些?

5、反射

什么是反射机制?

反射机制优缺点

反射机制的应用场景有哪些?

Java获取反射的三种方法

6、网络编程

7、常用API

①. String相关

字符型常量和字符串常量的区别

什么是字符串常量池?

String 是最基本的数据类型吗

String有哪些特性

String为什么是不可变的吗?

String真的是不可变的吗?

是否可以继承 String 类

String str="i"与 String str=new String("i")一样吗?

String s = new String("xyz");创建了几个字符串对象

如何将字符串反转?

数组有没有 length()方法?String 有没有 length()方法

String 类的常用方法都有那些?

在使用 HashMap 的时候,用 String 做 key 有什么好处?

String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的

②. Date相关

③. 包装类相关

自动装箱与拆箱

int 和 Integer 有什么区别

Integer a= 127 与 Integer b = 127相等吗

8、常用工具类库

9、单元测试

10、日志

二、Java异常面试题

1、Error 和 Exception 区别是什么?

2、运行时异常和一般异常(受检异常)区别是什么?

3、JVM 是如何处理异常的?

4、throw 和 throws 的区别是什么?

5、final、finally、finalize 有什么区别?

6、NoClassDefFoundError 和 ClassNotFoundException 区别?

7、try-catch-finally 中哪个部分可以省略?

8、try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?

9、类 ExampleA 继承 Exception,类 ExampleB 继承ExampleA?

10、常见的 RuntimeException 有哪些?

11、Java常见异常有哪些?

三、JVM面试题

1、Java内存区域

说一下 JVM 的主要组成部分及其作用?

说一下 JVM 运行时数据区?

深拷贝和浅拷贝?

说一下堆栈的区别?

队列和栈是什么?有什么区别?

2、HotSpot虚拟机对象探秘

对象的创建

为对象分配内存

处理并发安全问题

对象的访问定位

3、内存溢出异常

Java会存在内存泄漏吗?请简单描述

4、垃圾收集器

简述Java垃圾回收机制

GC是什么?为什么要GC

垃圾回收的优点和原理。并考虑2种回收机制

垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?

Java 中都有哪些引用类型?

怎么判断对象是否可以被回收?

在Java中,对象什么时候可以被垃圾回收

JVM中的永久代中会发生垃圾回收吗

说一下 JVM 有哪些垃圾回收算法?

说一下 JVM 有哪些垃圾回收器?

详细介绍一下 CMS 垃圾回收器?

新生代垃圾回收器和老年代垃圾回收器都有哪些?有什么区别?

简述分代垃圾回收器是怎么工作的?

5、内存分配策略

①. 简述java内存分配与回收策率以及Minor GC和Major GC

对象优先在 Eden 区分配

大对象直接进入老年代

长期存活对象将进入老年代

6、虚拟机类加载机制

简述java类加载机制?

描述一下JVM加载Class文件的原理机制

什么是类加载器,类加载器有哪些?

说一下类装载的执行过程?

什么是双亲委派模型?

7、JVM调优

说一下 JVM 调优的工具?

常用的 JVM 调优的参数都有哪些?

 

Talk is cheap,show me the 面试题:

阿里

阿里除了考查查常规的算法、缓存、数据库等技术知识外,还有紧跟热点的场景设计题:

请解释下为什么鹿晗发布恋情的时候,微博系统会崩溃,如何解决?

现有一批邮件需要发送给订阅顾客,且有一个集群(集群的节点数不定,会动态扩容缩容)来负责具体的邮件发送任务,如何让系统尽快地完成发送?

有一批气象观测站,现需要获取这些站点的观测数据,并存储到 Hive 中。但是气象局只提供了 API 查询,每次只能查询单个观测点。那么如果能够方便快速地获取到所有的观测点的数据?

如何实现两金额数据相加(最多小数点两位)

还有出题人的参考答题思路:

华为

华为的面试题涉及不少网络知识,看着像是笔试题?

在 V.35 和 V.24 规程中,控制信号 RTS 表示?

路由器作为网络互连设备,必须具备以下哪些特点?

在交换机中用户权限分为几个级别?

某公司申请到一个 C 类 IP 地址,但要连接 6 个的子公司,最大的一个子公司有 26 台计算机,每个子公司在一个网段中,则子网掩码应设为?

百度

百度的算法题一个接一个的:

从 300 万字符串中找到最热门的 10 条。

如何找出字典中的兄弟单词。给定一个单词a,如果通过交换单词中字母的顺序可以得到另外的单词 b,那么定义 b 是 a 的兄弟单词。现在给定一个字典,用户输入一个单词,如何根据字典找出这个单词有多少个兄弟单词?

设计 DNS 服务器中 Cache 的数据结构。要求设计一个 DNS 的 Cache 结构,要求能够满足每秒 5000 以上的查询,满足 IP 数据的快速插入,查询的速度要快。(题目还给出了一系列的数据,比如:站点数总共为 5000 万,IP 地址有 1000 万等等)

给 40 亿个不重复的 unsigned int 的整数,没排过序的,然后再给几个数,如何快速判断这几个数是否在那 40 亿个数当中?

……

MySQL 专项:

视图的作用,视图可以更改么?

数据库优化的思路是什么?

存储过程与触发器的区别是什么?

Redis 专项:

Redis 相比 Memcached 有哪些优势?

MySQL 里有 2000w 数据,Redis 中只存 20w 的数据,如何保证 Redis 中的数据都是热点数据?

Redis 的同步机制了解么?

MongDB

在哪些场景使用MongoDB?

为什么要在MongoDB中使用分析器?

Mongodb存储特性与内部原理?

Zookeeper:

Zookeeper通知机制

ZK集群下Server工作状态

分布式通知和协调

Nginx:

在 Nginx 中,如何使用未定义的服务器名称来阻止处理请求?

解释 Nginx 是否支持将请求压缩到上游?

Nginx 中多个 work 进程是如何监听同一个端口的?如何处理客户连接的惊群问题?

……

资料获取方法

点击传送门免费获取

原文地址:https://blog.csdn.net/qq13321123/article/details/107002508

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


jinfo 命令可以用来查看 Java 进程运行的 JVM 参数,命令如下:[root@admin ~]# jinfo --helpUsage: jinfo [option] <pid> (to connect to running process) jinfo [option] <executable <core> (to connect to a core file) jinfo [option] [serve
原文链接:https://www.cnblogs.com/niejunlei/p/5987611.htmlJava Virtual Machine Stacks,线程私有,生命周期与线程相同,描述的是Java方法执行的内存模型:每一个方法执行的同时都会创建一个栈帧(Stack Frame),由于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法的执行就对应着栈帧在虚拟机栈中的入栈,出栈...
java 语言, 开发者不能直接控制程序运行内存, 对象的创建都是由类加载器一步步解析, 执行与生成与内存区域中的; 并且jvm有自己的垃圾回收器对内存区域管理, 回收; 但是我们已经可以通过一些工具来在程序运行时查看对应的jvm内存使用情况, 帮助更好的分析与优化我们的代码;jps查看系统中有哪些java进程jps 命令类似与 linux 的 ps 命令,但是它只列出系统中所有的 Java 应用程序。 通过 jps 命令可以方便地查看 Java 进程的启动类、传入参数和 Java 虚拟机参数等信息
1.jvm的简单抽象模型:  2.类加载机制     双亲委派模型是为了防止jdk核心类库被篡改,如果需要打破可以重写Classloader.loadClass方法。r 双亲委派模型:一个类加载器收到一个类的加载请求,他会先判断自身是否已存在该类,如果不存在上抛给上一级类加载器ClassLoad
堆外内存JVM启动时分配的内存,称为堆内存,与之相对的,在代码中还可以使用堆外内存,比如Netty,广泛使用了堆外内存,但是这部分的内存并不归JVM管理,GC算法并不会对它们进行回收,所以在使用堆外内存时,要格外小心,防止内存一直得不到释放,造成线上故障。堆外内存的申请和释放JDK的ByteBuffe
1.springboot和tomcat2.springcloud的请求如何通过网关鉴权?3.springmvc启动时组件的加载顺序?4.mybatis如何同时更新三条记录5.hibernate实现级联更新6.一个web程序应用程序启动时的加载流程7.如何向www.baidu.com地址发出请求时,并获取相应?8.???9.谈谈你对tcp/iptelnetudp协
堆设置-Xms256M:初始堆大小256M,默认为物理内存的1/64-Xmx1024M:最大堆大小1024M,默认为物理内存的1/4,等于与-XX:MaxHeapSize=64M-Xmn64M:年轻代大小为64M(JDK1.4后支持),相当于同时设置NewSize和MaxNewSize为64M-XX:NewSize=64M:初始年轻代大小-XX:MaxNewSize=256M:最大年轻代大小(默认
一.概述收集算法(JVM之垃圾回收-垃圾收集算法)是内存回收的抽象策略,垃圾收集器就是内存回收的具体实现。JVM规范对于垃圾收集器的应该如何实现没有任何规定,因此不同的厂商、不同版本的虚拟机所提供的垃圾收集器差别较大,这里只看HotSpot虚拟机。就像没有最好的算法一样,垃圾收集器
Java中的堆是JVM所管理的最大的一块内存空间,主要用于存放各种类的实例对象,如下图所示: 在Java中,堆被划分成两个不同的区域:新生代(Young)、老年代(Old)。新生代(Young)又被划分为三个区域:Eden、S0、S1。 这样划分的目的是为了使JVM能够更好的管理堆内存中的对象,包
JVM深入理解JVM(4)——如何优化JavaGC「译」 PostedbyCrowonAugust21,2017本文翻译自SangminLee发表在Cubrid上的”BecomeaJavaGCExpert”系列文章的第三篇《HowtoTuneJavaGarbageCollection》,本文的作者是韩国人,写在JDK1.8发布之前,虽然有些地
 JVM深入理解JVM(2)——GC算法与内存分配策略 PostedbyCrowonAugust10,2017说起垃圾收集(GarbageCollection,GC),想必大家都不陌生,它是JVM实现里非常重要的一环,JVM成熟的内存动态分配与回收技术使Java(当然还有其他运行在JVM上的语言,如Scala等)程序员在提升开
运行时数据区  线程独有本地方法栈、虚拟机栈、程序计数器这些与线程对应的数据区会随着线程开始和结束创建和销毁  整体公有元数据区(又称方法区)、堆区会随着虚拟机启动而创建,随着虚拟机退出而销毁 
java整个堆大小设置:Xmx和Xms设置为老年代存活对象的3-4倍,即FullGC之后的老年代内存占用的3-4倍。永久代PermSize和MaxPermSize设置为老年代存活对象的1.2-1.5倍年轻代Xmx的设置为老年代存活对象的1-1.5倍老年代的内存大小设置为老年代存活对象的2-3倍BTW: Sun官方建议年轻代
栈顶缓存(Top-of-StackCashing)技术基于栈式架构得虚拟机所使用的零地址指令更加紧凑,但完成一项操作的时候必然使用更多的入栈和出栈指令,这同时也就意味着将需要更多的指令分派次数和内存读写次数 由于操作数是存储在内存重的,因此频繁地执行内存读/写操作必然影响速度。 综上
自用。同样的代码在不同的平台生成的机器码是不一样的,为什么java代码生成的字节码文件,能在不同的平台运行?因为不同版本的jdk里面的虚拟机会屏蔽不同操作系统在底层硬件与指令上的区别。栈:线程栈,局部变量存放栈内存区域。线程(分配一个栈)运行分配栈将局部变量放入内存。怎么放:栈
jconsole监控:1.java启动命令加上参数java-Djava.rmi.server.hostname=172.16.17.247-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port=2099-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false -XX:+Unlock
类加载器分类publicclassStackStruTest{publicstaticvoidmain(String[]args){//对用户自定义个类来说:默认使用系统类加载器进行加载-----AppClassLoaderClassLoaderclassLoader=StackStruTest.class.getClassLoader();System.out.p
堆体系结构一个JVM实例只存在一个堆内存,堆内存的大小是可调节的。类加载器读取类文件后,需要把类、方法、常量、变量放在堆内存中,保存所有引用类型的真实信息,以方便执行器指向,堆内存分为三个部分:年轻代、老年代、永久代。Java7之前,堆内存在逻辑上分为:年轻代、老年代、永久代。物
JVM深入理解JVM(5)——虚拟机类加载机制 PostedbyCrowonAugust21,2017在Class文件中描述的各种信息,最终都需要加载到虚拟机中之后才能运行和使用。而虚拟机中,而虚拟机如何加载这些Class文件?Class文件中的信息进入到虚拟机中会发生什么变化?本文将逐步解答这
保存(持久化)对象及其状态到内存或者磁盘Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在