java企业面试真题

本文整理了企业面试中的Java相关问题,涵盖基础概念、算法、JVM、多线程、数据结构等多个方面。内容包括Java的优势、JDK与JRE的区别、重写与重载的差异、抽象类与接口的区别、HTTP与HTTPS的区别等,并探讨了Java在实际项目中的应用。面试者需深入理解Java核心概念,并具备扎实的编程基础。
摘要由CSDN通过智能技术生成

企业面试真题

(未更新完 持续更)

1.你面试来这里有没有什么优势
  科班出身,一本大学计算机专业软件工程学士学位,
  校外培训经验,华创理想java就业班学习三年并有一定的项目经验
2.你敲过最多的代码是什么?
  java python(vim)c++
3.你独立敲过两遍以上的代码是什么?
  各种信息管理系统
4.你个人最感兴趣的功能模块是什么?
  业务逻辑层
5.你最熟悉哪个项目
6.你了解实施吗?

7.说说两个项目
旅游管理 电商平台
8.除了idea还能用什么开发工具
  eclipse vscode HbudlerX vc++ vs studio
9.用过什么算法
  枚举,递归,分治,模拟,贪心,动态规划,回溯、冒泡、快速、直接选择和堆、直接插入和希尔排序、归并排序、顺序查找、二分查找、索引查找、二叉排序树、哈希查找、深度优先遍历与广度优先遍历, 最短路径,最小生成树,拓扑排序
10.jdk和jre的区别
  jdk是java软件开发工具包,支持java程序开发,包括编译器、开发工具、类库
  JDK(Java SE Development Kit),Java标准开发包,它提供了编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行时环境,以及常用的Java类库等。
  JRE( Java Runtime Environment) 、Java运行环境,用于解释执行Java的字节码文件。普通用户而只需要安装 JRE(Java Runtime Environment)来运行 Java 程序。而程序开发者必须安装JDK来编译、调试程序。

  jre是java运行环境,包含jvm虚拟机和所有java类库的class文件
11.jvm和jre的区别?
  JRE是Java运行环境,所有Java程序必须依赖JRE才能运行.只有JVM是不能运行字节码文件的
  JVM(Java Virtual Mechinal),Java虚拟机,是JRE的一部分。它是整个java实现跨平台的最核心的部分,负责解释执行字节码文件,是可运行java字节码文件的虚拟计算机。所有平台的上的JVM向编译器提供相同的接口,而编译器只需要面向虚拟机,生成虚拟机能识别的代码,然后由虚拟机来解释执行。

  当使用Java编译器编译Java程序时,生成的是与平台无关的字节码,这些字节码只面向JVM。不同平台的JVM都是不同的,但它们都提供了相同的接口。JVM是Java程序跨平台的关键部分,只要为不同平台实现了相应的虚拟机,编译后的Java字节码就可以在该平台上运行。

在这里插入图片描述

12.重写重载区别?
  重写:发生在父子类之间,父类的方法不能满足子类的使用,需要对父类的方法进行覆盖(重写),特点是子类的方法签名与父类的方法签名相同。需要遵从“两同两小一大”原则。即:方法名同,参数类型列表同,返回值类型小于等于父类方法的返回值类型,抛出的异常小于等于父类方法抛出的异常,访问修饰词大于等于父类方法的修饰词。如果父类方法的返回值是void子类也必须是void,如果父类方法返回值类型是八种基本类型,子类必须一致。重写体现面向对象父子类之间行为的多态。
  
  重载:发生在同一个类中,方法名相同,但是参数类型列表不同(类型不同或个数不同或参数的顺序不同),与返回值类型无关。体现了面向对象一个类内部行为的多态。

  • (重写:发生在父子类之间,父类的方法不能满足子类的使用,需要对父类的方法进行覆盖(重写),特点是子类的方法签名与父类的方法签名相同。需要遵从“两同两小一大”原则。即:方法名同,参数类型列表同,返回值类型小于等于父类方法的返回值类型,抛出的异常小于等于父类方法抛出的异常,访问修饰词大于等于父类方法的修饰词。如果父类方法的返回值是void子类也必须是void,如果父类方法返回值类型是八种基本类型,子类必须一致。重写体现面向对象父子类之间行为的多态。

  重载:发生在同一个类中,方法名相同,但是参数类型列表不同(类型不同或个数不同或参数的顺序不同),与返回值类型无关。体现了面向对象一个类内部行为的多态。)

13.抽象类和接口的区别
  接口是行为的抽象,是一种行为的规范,接口是like a 的关系;抽象是对类的抽象,是一种模板设计,抽象类是is a 的关系。
接口没有构造方法,而抽象类有构造方法,其方法一般给子类使用
接口方法不实现,抽象类方法可以实现

  • (1、抽象类可以有不是抽象的方法。接口中所有的方法都是抽象的(JDK1.8以后,接口中可以有static或default修饰的实例方法)。
    2、抽象类之间是单继承。接口之间可以多继承,一个类可以实现多个接口。
    3、抽象类继承抽象类可以不用实现里面所有的抽象方法,非抽象类继承抽象类必须实现抽象类的所有抽象方法。实现接口必须要实现里面所有的抽象方法。
    4、抽象类可以包含实例变量。接口中都是常量。)

14.基本数据类型
  int byte short long string float double char
15.switch 中的default什么时候执行
  当所有的case都不满足条件时,才执行default。
16.switch 中没有break;会怎么执行
  如果没有break语句,则会从满足条件的地方(即与switch(表达式)括号中表达式匹配的case)开始执行,直到switch结构结束。
17.while和doWhile的区别?
  二者表达式不同:while循环表达式为while(表达式) {循环语句},do-while循环结构为do {循环体}while {表达式}二者循环次数不同:while先判断后执行,判断条件不成立可以不执行;而do-while先执行后判断,至少执行一次。
18.八大基本类型
int byte short long string float double char
19.你对面向对象的理解
  面向对象是相对于面向过程来讲的,面向对象方法,把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。
  面向对象编程是一种编程范式(封装、继承、多态),面向对象编程可以通过调用对象来直接达到目的(对象为提前准备好的代码)
对象可以是以人的视角里的对象也可以是计算机视角里的对象
20.接口和接口之间能不能继承
  可以,接口可以继承接口但不能实现接口的方法

21.你能破解idea吗
22.你对java的理解
  write once ,run anywhere
  java是一门面向对象编程语言,Java 语言一方面语法与 C 语言和 C++ 语言很接近,使得大多数程序员很容易学习和使用,另一方面摒弃了C语言和C++繁琐晦涩难懂的部分,如果说C与C++是在计算机视角和人类视角之间寻找一个平衡点,那么java就是以人类视角的逻辑去编写程序通过已定的套路将人类易懂的语言转换成计算机能懂的机器语言从而让计算机运行程序。
  java对于C与C++就像模仿中创新。由于Java面世属于一门新语言,想要扩大市场占有率那必然学习成本不能过高,所以语法与C与C++有类似。java最为广大程序员接受的是有别于其他语言的图形界面程序(applet)

23.http和https的区别
   HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好。
  HTTP 页面响应速度比 HTTPS 快,主要是因为 HTTP 使用 TCP 三次握手建立连接,客户端和服务器需要交换 3 个包,而 HTTPS除了 TCP 的三个包,还要加上 ssl 握手需要的 9 个包,所以一共是 12 个包。
  http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443。
  HTTPS 其实就是建构在 SSL/TLS 之上的 HTTP 协议,所以,要比较 HTTPS 比 HTTP 要更耗费服务器资源。
24.maven是如何管理项目的
  Maven可以简单的理解为是一个管理项目中所需要使用的jar包的工具;
  在Maven项目中,在根目录下就存在pom.xml文件,在这个文件中可以通过代码来添加项目中所需要的jar包文件的“依赖”,则开发工具可以自动从“仓库服务器”中下载对应的jar包文件,下载的jar包文件会出现在“本地仓库”中。
25.你部署过本地仓库过吗
  部署过。打开maven安装目录\conf\setting.xml文件,写入<localRepository>盘符:\本地仓库文件名</localRepository>
26.int和String怎么互相转换
String转为int

int i=Integer.parseInt(string);
int i=Integer.valueOf(s).intValue();

int转为String

String s = String.valueOf(i);
String s = Integer.toString(i);
String s = “” + i;

27.创建线程几种方式
  继承Thread类 实现Thread类中的run()方法
  实现Runnable接口
  从线程池中创建线程
  使用Callable和Future创建线程
28.String类中的方法
  length ()、charAt ()、substring ()、compareTo ()、compareToIgnore ()、equals ()、concat ()、indexOf ()、lastIndexOf ()
29.String是基本数据类型吗
  不是 String是Java中的一个类 string是基本数据类型
30.怎么去除字符串中间的空格
  trim()方法
31.迭代器是什么
  迭代器是一种访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。
32.迭代器的特点
  
33.排序的关键字
为了使查询结果的顺序满足用户的要求,MySQL 提供了 ORDER BY 关键字来对查询结果进行排序。
34.迭代器有什么好处
  1.效率高。相较于for循环遍历LinkedList则是,Iterator中的next()方法采用的是顺序访问方法比较快。
  2.简便。使用迭代器不用考虑集合容器的内部结构,使用迭代器对容器内元素操作更为简单。把访问类型从不同的集合类中抽取出来,从而避免向外部暴露集合的内部结构。
  迭代器可用作方法、运算符或get访问器的代码体;
35.集合
  集合是用来存放对象的数据结构,其长度可变,可存放不同类型的对象,并提供了一组操作成批对象的方法。相较于数组,集合遍历方式丰富,适合增删。
36.哪种集合最快?介绍一下各种集合
37.进程和线程的区别
  进程:进程就是正在运行的程序,也就是代表了程序锁占用的内存区域。其具有独立性、动态性、并发性
  线程:线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一个进程可以开启多个线程
在这里插入图片描述
在这里插入图片描述
由此可见一个操作系统中可以由多个进程,一个进程中可以有多个线程,每个进程由自己独立的内存,每个线程共享一个进程中的内存,每个线程又有自己独立的内存。
38.集合遍历?
39.数据结构
40.数据结构增删哪个快,查询哪个快?
  链表增删快。链表中元素在内存中散列存放。数组的中间增删一个元素,那么这个元素后的所有元素的内存地址都要往移动,而链表不需要改变内存的地址,只需要修改节点的信息即可(指针指向,节点值)。
  数组查询快。数组中元素的内存地址是连续的。cpu缓存会把一片连续的内存空间读入。数组结构是连续的内存地址,所以数组全部或者部分元素被连续被存在cpu缓存里面,而链表的节点是分散在堆空间里面的,这时候只能是去读取内存,而缓存的速率要比内存快。
41.你对红黑树的理解
42.遇到过内存溢出吗
  遇到过
int i=128;
byte a=(byte)a;
输出: i=128 a=-128
43.遇到过内存泄漏吗
44.==和eq的区别
  ==对于基本类型比较的是值是否相等,对于引用类型是比较在堆内存中的地址是否相等;equals()是Object类的一个方法,默认情况下比较的是地址值是否相等,可按照需求逻辑重写方法。
45.你对http协议有什么了解
46.java怎么创建对象?
47.序列化和反序列化
  把java对象转换为字节序列的过程称为对象的序列化
  把字节序列恢复为java对象的过程称为对象的反序列化
  这两个过程结合起来,可以轻松地存储和传输数据。
48.你对值传递和引用传递有什么看法
49.io流有什么了解
  
50.runnable和callable有什么区别
  
51.lambda表达式
  
52.堆栈怎么使用
  
53.jvm内存结构

54.对多线程有什么了解
55.线程之间怎么传递参数
56.GC有什么理解
57.排序算法
58.int 怎么判断不能为空
59.日期格式化
60.查询字符串从下标第几开始查
61.String常用API
62.String怎么截取字符串,怎么反转字符串
63.StringAPI
64.什么是字节流,什么是字符流
65.权限修饰符
66.虚拟机结构?(堆,栈,方法,编译器,程序计数器)
67.怎么删除一个map中重复的value值?
68.字符串怎么截取中间字符
69.线程在项目中怎么用的
70.怎么用正则表达式做个数字验证
71.ArrayList为什么是线程不安全的?
72.增强for循环怎么写
73.如何去除字符串两边的空格
74.util包下有什么
75.String中API…
76.int和Integer区别
77.二进制和十六进制转换
78.javaAPI相关
79.final和finally区别
80.file文件读写怎么实现?
81.编码集说几个,都是多少字节?
82.数据结构(树,数组等)
83.ArrayList和linkedList和Vector有什么区别
84.hashMap和HashCode有什么区别
85.使用过多线程吗?
86.你对线程的理解
87.使用过多线程吗?
88.你对线程的理解
89.socket模拟通讯了解吗?
90.数据结构
91.什么时候使用hashtable
92.如果不写sql是个文件怎么做
93.点击下单按钮以后,每个月份下单数+1,怎么做?—socket
94.有大量的数据,只有姓名,怎么查找最快
95.多选框怎么获取值 通过什么
96.原生js
97.jq怎么获取对象
98.前端使用的是什么框架?
99.给一个网站截图,照着写前台代码,能写多少
100.前端页面刷新
101.前端页面打开一个新的页面用什么指令
102.js怎么隐藏对象
103.js和jq获取指定对象
104.你常用的html标签
105.做个下拉选用什么标签?
106.下拉选元素初始化怎么做?
107.别人修改数据库,你前端怎么及时展示修改后的数据
108.前端给你做,你能做到什么程度
109.有没有学过前端布局
110.前端react框架(移动端)
111.怎么样按月份在前端展示折线图
112.sql:查询姓名和年纪,查询年龄最大的
113.数据三范式?
114.mysql实现分页用什么
115.jq怎么显示和隐藏
116.js怎么显示和隐藏
117.union和unionall区别
118.数据库去重关键字
119.数据库索引
120.使用索引为什么快。
121.sql:查询有重复姓名的sql
122.oracle和mysql的区别
123.数据库,了解非线性数据库吗
124.了解存储过程吗?
125.数据库中怎么判断字段不等于null
126.数据库三范式
127.视图是什么时候删除
128.怎么创建存储过程
129.mySql函数
130.数据库分页
131.sql里面的函数都有什么
132.函数必须配合group by使用吗?
133.怎么创建索引?
134.怎么操作索引?
135.除了外连接和内连接还有什么连接
136.join on 默认是什么
137.口述sql
138.怎么创建主键
139.如何查询两张表之间的交集数据
140.十条数据查第一条怎么查
141.分页有几种方式?
142.分页第五页往后,没数据了,你觉得是哪出现的原因
143.数据库关键字
144.limit和order by谁放前面
145.mysql语句
146.怎么创建虚表(视图)?
147.创建视图关键字是什么?
148.数据库存储过程?
149.数据库存储过程和视图的创建
150.sql优化经验
151.多关联表的时候索引怎么创建
你怎么判断你的sql是否走了索引?答: 在查询sql前面加一个explain type = ALL 就是全表查询
sql:有两个表,有两个字段,a字段和b字段,做关联索引,在where条件后a=1或b=2。怎么判断条件会不会走索引?
前端vue了解怎么样
对limit怎么理解的?
为什么要用索引?
索引有什么作用
索引原则
数据库存的密码加密吗?
sql增删改怎么写
limit关键字
like关键字
基本增删改查用的什么数据结构
怎么创建视图
sql按年,按月分组
怎么样的查询能正确走索引
sql名字和年龄一千条以上怎么做?
请说一下config
怎么进行页面之间的值传递
form如何查询第五行
tomcat在哪修改端口号
form表单怎么传值
前端和后端怎么传的参数?
from表单中提交哪些属性
如何避免sql注入
前端怎么做的登录验证
form表单里的属性
部署过一个项目吗?怎么部署的?
mybatis是怎么实现分页的
spring事务
Springboot启动类上的注解
mybatisPlus做一个关联表怎么做
Mybaits分页几种方式
springMVC注解
怎么设计一个多对多的表结构
多表联合的时候怎么优化查询?
多表关联查询都有什么?
json怎么封装一个数据格式
旅游项目流程
你最擅长什么?
设计模式
拦截器和过滤器的区别
你怎么自定义拦截器
你怎么自定义过滤器
springboot
公司与公司之间如何进行接口调用
权限和身份验证是怎么做的?
get和post有什么区别
项目流程
做的哪个模块
了解ssh吗
两个项目流程
什么是解耦
jar包和war包有什么区别
除了这两个项目还做了什么项目
shiro框架什么版本
加密算法了解吗
springboot怎么用的 你是怎么在项目中怎么用的
shiro框架什么版本,你是怎么实现的
springboot,springMVC,spring区别
MVC运行原理
KaTeX parse error: Expected 'EOF', got '#' at position 5: {} #̲{}的区别 项目在没在tomc…{}有什么区别?
shior框架搭建流程
怎么做的用户权限
boot项目没有配置文件能启动吗?
双向绑定用什么指令
用户的登录怎么做的
访问资源路径的注解
怎么把yml里的配置信息注入得到controller里
controller接收前端传过来的参数注解哪三个,区别
spring 和 springMVC springBoot区别
ioc和aop都是什么(aop详细问)
旅游项目流程
redis数据结构
部署热部署的方式
热部署属于哪个包
redis的三大特性
redis好处?
你对redis理解
linux如何运行jar
linux常用命令
备份数据库
在linux里用数据库查出来有多少张表
两个数据库怎么进行连接
第二个项目几个调用关系,项目流程
nginx
redis集群搭建
ajax哪几种请求方式
ajax向后台传参数
怎么复制一张表?
第二个项目,具体怎么完成的
linux命令
linux系统你用来干什么了?
前端往后端传参数用的是什么技术?
redis集群搭建?
项目里用redis缓存的是什么数据?
怎么保证缓存数据和数据库数据是一致的?
redis集群搭建 , 要注意什么? 怎么保证数据共享
ajax函数是怎么保证异步刷新的
那么在AJAX客户端如何做到的异步呢?实际上就是Javascript的回调函数起的作用
redis用的是哪个数据结构
nginx配置文件中的重要参数是什么?
linux常用指令
你在linux搭建环境变量需要什么指令? vim /etc/*****
linux指令
linux怎么修改文件
linux用的是哪个版本
注册中心是客户端的还是服务端的
linux系统下,怎么使用docker部署项目,部署nginx,部署rabbitmq
linux指令**
linux部署docker (install命令…)
linux系统给你项目和中间件多久能部署出来
有一百万条数据,找年纪最大的
springcloud的工具
对微服务的理解
rabbitmq特点
说一下springcloud
rabbitMQ的特点?
RabbitMQ三大特性
你Cloud项目,你做的那块,怎么做的?
事务
消息队列都做了什么
zuul网关怎么进行权限校验?
隔离级别
fegin注解 怎么使用
Fegin两种调用方式?
zuul网关是什么?怎么用的
eureka是什么?怎么用的
zuul网关怎么高可用?
zuul网关各个服务怎么自动配置
zuul网关电商平台怎么登录验证
Cloud学没学过
数据库里有一百万条数据,怎么取出来存入队列里,并且保证队列实时更新的****

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值