java相关面试题

1.数据库相关

1.1.索引

优点:

1、所有的MySql列类型(字段类型)都可以被索引,也就是可以给任意字段设置索引

2、大大加快数据的查询速度

缺点:

1、创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加

2、索引也需要占空间,我们知道数据表中的数据也会有最大上线设置的,如果我们有大量的索引,索引文件可能会比数据文件更快达到上线值

3、当对表中的数据进行增加、删除、修改时,索引也需要动态的维护,降低了数据的维护速度。

使用原则:

通过上面说的优点和缺点,我们应该可以知道,并不是每个字段度设置索引就好,也不是索引越多越好,而是需要自己合理的使用。

1、对经常更新的表就避免对其进行过多的索引,对经常用于查询的字段应该创建索引,

2、数据量小的表最好不要使用索引,因为由于数据较少,可能查询全部数据花费的时间比遍历索引的时间还要短,索引就可能不会产生优化效果。

3、在一同值少的列上(字段上)不要建立索引,比如在学生表的"性别"字段上只有男,女两个不同值。相反的,在一个字段上不同值较多可是建立索引。

1.2.mysql的主从实现原理

主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。

mysql支持的复制类型:

(1):基于语句的复制: 在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。
一旦发现没法精确复制时, 会自动选着基于行的复制。
  (2):基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍. 从mysql5.0开始支持
  (3):混合类型的复制: 默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。

1.3.union和unionall的区别

Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;(去重,排序)

Union All:对两个结果集进行并集操作,包括重复行,不进行排序;

1.4.inner 和 leftjoin的区别

left join(左联接) :返回包括左表中的所有记录和右表中联结字段相等的记录
right join(右联接):返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) :只返回两个表中联结字段相等的行

1.5.sql优化

SQL优化 - 大道至简(老徐) - 博客园 (cnblogs.com)

常见的SQL优化 - 平凡的猪 - 博客园 (cnblogs.com)

1.6.mysql面试题

MySQL常见面试题 - power_LYL - 博客园 (cnblogs.com)

mysql 常见面试题 - 割肉机 - 博客园 (cnblogs.com)

2.算法与数据结构相关

2.1.栈

保存局部变量的值:包括1.基本数据类型的值。2.保存类的实例,即堆区对象的引用(指针)。3.保存加载方法时的帧。

栈是一个先入后出(FILO:First In Last Out)的有序列表,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性,栈有一个很重要的特殊性,就是存在栈中的数据可以共享

2.2.堆

用来存放动态产生的数据,比如new出来的对象。注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因为同一个类拥有各自的成员变量,存储在堆中的不同位置,但是同一个类不同实例的他们共享该类的方法,并不是每创建一个对象就把成员方法复制一次。

2.3.java的集合类

2.3.1.数组
2.3.2.list
2.3.3.set
2.3.4.map

Java进阶篇(三)——Java集合类 - JAdam - 博客园 (cnblogs.com)

Java集合类详解 - Jay36 - 博客园 (cnblogs.com)

2.4.排序算法

2.4.1.冒泡排序

java实现冒泡排序 - 灰大狼。 - 博客园 (cnblogs.com)

2.4.2.快速排序

java之快速排序 - 一梦三千年 - 博客园 (cnblogs.com)

3.多线程相关

3.1多线程应用场景

1.为了不阻塞主线程,启动其他线程来做耗时的事情。
比如app开发中耗时的操作都不在UI主线程中做。

2.实现响应更快的应用程序, 即主线程专门监听用户请求,子线程用来处理用户请求。以获得大的吞吐量。
感觉这种情况下,多线程的效率未必高。 这种情况下的多线程是为了不必等待, 可以并行处理多条数据。

3.某种优先级虽然很低的服务,但是却要不定时去做。
比如Jvm的垃圾回收。

4.某种任务,虽然耗时,但是不耗CPU的操作时,开启多个线程,效率会有显著提高。
比如读取文件,然后处理。 磁盘IO是个很耗费时间,但是不耗CPU计算的工作。 所以可以一个线程读取数据,一个线程处理数据。肯定比
一个线程读取数据,然后处理效率高。 因为两个线程的时候充分利用了CPU等待磁盘IO的空闲时间。

3.2.多线程的实现方式

第一种:继承Thread类,重写该类的run()方法。

第二种:实现Runnable接口,并重写该接口的run()方法。

第三种:使用Callable和Future接口创建线程。

第四种:通过线程池创建线程。

3.3.多线程面试题

Java多线程面试题及答案(2020版) - Java团长 - 博客园 (cnblogs.com)

java多线程面试题整理及答案 - 洪墨水 - 博客园 (cnblogs.com)

4.计算机网络

4.1.网络协议图

计算机网络常见面试题 - 不懒人 - 博客园 (cnblogs.com)

4.2.tcp三次握手,四次挥手

4.3.tcp与udp的区别

  1. tcp基于连接,而udp无连接
  2. tcp对系统资源要求较多,udp较少
  3. tcp是流模式,而udp是数据报模式
  4. tcp保证数据的准确性,udp则可能会有丢包的风险
  5. tcp保证数据的顺序准确,udp则不保证
  6. tcp报文首部大小大于20字节,udp报文首部大小为8字节(包含源端口、目的端口、长度和校验码,每个2字节)

4.4.http的组成

4.4.1.HTTP 请求的组成

​ 状态行、请求头、消息主体三部分组成。

4.4.2.HTTP 响应的组成

​ 状态行、响应头、响应正文

4.4.3.HTTP常用请求方法
  • GET 请求获取Request-URI所标识的资源
  • POST 在Request-URI所标识的资源后附加新的数据,常用于提交表单。
  • PUT 请求服务器存储一个资源,并用Request-URI作为其标识
  • DELETE 请求服务器删除Request-URI所标识的资源

4.5.http和https 为什么https更安全

https是在http的基础上添加了一个SSL加密层,是HTTP协议的安全版

  1. 对传输的数据进行加密,保证数据传输的数据安全
  2. 对网站服务器进行真实性验证

http传输采用的明文,内容可能会被窃听,

无法验证报文的完整性,也就是报文可能会被篡改,

不验证通信方的身份,可能会遇到伪装的通信方

https的内容会经过对称加密,每个连接都会生成一个唯一的加密密钥

内容传输会经过完整性校验,避免报文被篡改

第三方无法伪造身份,需要有数字证书验证

5.linux命令

linux常用命令,基本记录

6.jvm调优

JVM性能调优 - CSniper - 博客园 (cnblogs.com)

JVM调优常用命令 - tonglin0325 - 博客园 (cnblogs.com)

24个Jvm面试题总结 - JesseP - 博客园 (cnblogs.com)

7.web框架

SSM框架面试题及答案整理 - 工程师搁浅 - 博客园 (cnblogs.com)

JavaSSM框架精选50道面试题 - 曹明 - 博客园 (cnblogs.com)

8.设计模式

设计模式常见面试题汇总 - 洲洋1984 - 博客园 (cnblogs.com)

java设计模式面试专题及答案 - 程序员小羊 - 博客园 (cnblogs.com)

9.消息中间件

9.1.redis

Redis文档中心 – Redis中国用户组(CRUG)

redis面试题汇总 - ExplorerMan - 博客园 (cnblogs.com)

9.2.kafka

Kafka学习之路 (一)Kafka的简介 - 扎心了,老铁 - 博客园 (cnblogs.com)

kafka-常用面试题汇总 - d-w - 博客园 (cnblogs.com)

9.3.RabbitMQ

消息队列之 RabbitMQ - 简书 (jianshu.com)

RabbitMQ几个常用面试题 - woadmin - 博客园 (cnblogs.com)

消息中间件(一)MQ详解及四大MQ比较_jcpp9527的博客-CSDN博客_消息中间件

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跳舞 D 猴子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值