java面试常考问题_八股文

author:可以根据下面这些题查漏补缺


(1)

问题:
1. 会哪些开发语言


2. java集合中的ArrayList和LinkedList的实现原理

arraylist和linkedlist都实现了list接口

arraylist实现的底层逻辑是数组,适用于随机访问和查询

linkedlist实现的是底层逻辑是双向链表,适用于插入和删除元素


3. HashMap的底层数据结构

数组+链表


4. ConcurrentHashMap如何保证线程安全

重复扫描:ConcurrentHashMap在进行put操作时,会进行重复扫描,以确定相应key值是否已经在数组里面,进而决定是更新还是放置操作。

5. Hash函数实现

Hash函数是指把一个大范围映射到一个小范围。把大范围映射到一个小范围的目的往往是为了节省空间,使得数据容易保存。


6. Java中的锁

Java中的锁是一种同步机制,用于确保多个线程同时访问共享资源时的线程安全性。


7. synchronized和Lock的区别

Lock接口的实现类ReentrantLock,不仅具有和synchronized相同的并发性和内存语义,还多了超时的获取锁、定时锁、等候和中断锁等。


8. monitorenter和monitorexit字节码底层实现


9. 无锁的缺点

而synchronized会让线程在没获得锁的情况下发生上下文切换,进入阻塞,等到下次唤醒还得启动线程,所以效率比较低 


10. cas的底层实现


11. cpu实现原子性,锁住总线的细节


12. 掌握什么数据库,关系型和非关系型


13. mysql中有一个表有(A,B,C,D)字段,select A,B from 表 where C=? and D=?,怎么建立索引?


14. 掌握的ORM框架


15. Mybatis generator根据表结构自动生成Mapper代码的方式,如果后面在生成的mapper文件中自己新增了一些方法和sql,之后表结构发生变化,比如新增字段,这时候该怎么处理
16. redis有哪些淘汰策略
17. redis中的淘汰策略的LRU算法的具体实现(redis中用的近似LRU淘汰策略)
18. 用代码设计实现一个满足LRU的数据结构(口述),好像leetcode也有类似的题
19. 树形结构的数据库表设计(多叉树)
20. 问简历上的项目(我的项目用到了Java的nio和Reactor模式)
21. 问单Reactor单线程相较于单Reactor多线程有什么缺点
22. 多Reactor相较于单Reactor的好处,为什么要拆成多个Reactor
23. nio底层实现
24. epoll的实现原理
25. 系统如何知道网络事件的到来(网卡,网卡驱动,中断)
26. 算法题目:对称二叉树

(2)

1. ArrayList与LinkedList的区别与使用场景。
2. ArrayList的扩容原理。
3. HashMap的底层数据结构。
4. 为什么HashMap不是线程安全的?
5. 并发的集合都有哪些?
6. ConcurrentHashMap的线程安全是如何保证的?
7. 线程池的参数有哪些,并解释出来它们的含义。
8. 线程池中的5个核心线程、队列长度为500、100个非核心线程,详细解释一下线程池的执行过程。
9. Java中锁住一段代码或者某个方法的方式。
10. Sync关键字的实现方式与Reen可重入锁的实现方式。
11. MySQL中的事务隔离级别有哪些?
12. MySQL的可重复读隔离级别是否可以解决幻读问题?
13. MVCC的底层实现原理。
14. SQL题目一:一句SQL语句查出表中id分别为1,3,5的数据。
    select * from table where id in (1,3,5);
    select * from table where id = 1 or id = 3 or id = 5;
15. SQL题目二:两个表连接查询,one(a,b,c),two(c,d,e),要求a=1,d=2,查出d,e。
    select two.d, two.e from one, two where one.c = two.c and one.a = 1 and two.d = 2;
    select two.d, two.e from one inner join two on one.c = two.c where one.a = 1 and two.d = 2;
16. Redis的数据结构。
17. Redis中String类型的底层实现。
18. Redis是单线程的吗?
19. Redis的接收请求是单线程的,为什么单线程也还会这么快?
20. 如何保证MySQL与Redis的数据一致性。
21. Redis的持久化方式。
22. 算法题:合并两个有序链表(力扣原题)。

(3)

tcp和udp区别

●tcp可靠性是怎么达到的

●tcp的拥塞控制

●Linux机器路径下的文件打开计算机干了什么,操作系统干了什么

●磁盘结构

●为什么区分用户态和内核态

●https用的是对称加密还是非对称加密

●进程和线程的区别

●进程切换和线程切换都会干什么

●Java中都有哪里用到了红黑树

●红黑树相比avl树优点在哪里

●手写单例模式

●volatile的用处,除了保证可见性还能够干什么

●JVM中哪里会发生OOM

●写个方法让方法区或元空间OOM,看实在不会,问给个思路就可以了

●什么情况会导致栈的OOM 说了个递归调用(傻子)

●JVM什么时候会将对象从新生代移动到老年代

●Spring中使用到的设计模式

●数据库底层的索引结构是什么

●B+树相比B树的优点

●为什么递增字段的作为主键会更好

●mysql中的undolog和redolog,binlog

(4)


自我介绍
Java的8个基本类型
TCP和udp的区别, (TCP的四个标志啥的,不清楚)
并发工具(synchronized,reentrantlock,Semaphore,原子类)
介绍一下Semaphore(不会, 一笔带过)
线程池参数
线程池提交线程的流程
JVM内存区域是怎么样
JVM的垃圾收集器(串行,并行,CMS,G1,ZGC)
你提到了ZGC,能不能说说他的算法(不清楚,只知道用了三色标记法,没有分代)
mysql的索引, 如何建立联合索引
数据库的隔离级别
你觉得用哪个好
redis基础数据类型
项目问题(我项目里写的):
RBAC的表结构是怎么样的
springcloud的一些组件(说了熔断器, 负载均衡, 网关,注册中心)
注册中心用Eureka还是zookeeper(用的是Eureka,他是AP的,zookeeper是CP的)
你觉得CP还是AP重要(CP,数据强一致性)

手撕环节:
第一道:快排解决top k问题, 半天没想出来快排算法的过程(绷)
面试官人很好,给我换了一道, 二叉树的层序遍历
但是写完之后放在牛客的框子里编译错误了
说我思路没错, 然后就这样结束了

1. 简单的问了简历上的两个项目,没深入问
2. 合并两个有序链表(迭代+递归)
3. 业务题,与list和map的使用有关(第一次做这种题直接懵了,回头想想其实很简单)
4. 垃圾回收算法,垃圾回收器
5. fullGC是什么,什么时候会触发(忘记了)
6. 数组和链表插入和删除的时间复杂度(回答错了,其实都是O(n),忘记了插入的时候要先查找),数组整体挪动元素的时间复杂度
7. git提交、拉取、合并等命令是什么
8. maven命令有哪些,都有什么用(确实用得少,只想起来两个)
9. 怎么排查慢sql,怎么优化
10. 用实际的sql语句考察:覆盖索引、回表查询、最左前缀法则
11. 死锁是什么,写一个死锁的场景(我以为说的是java的死锁,没想到问的是mysql的死锁,脑子抽了没想出来)
12. 为什么要使用springMVC,有什么好处
13. 设计模式:代理模式和装饰器模式是什么,有什么异同,spring中哪里用到了装饰器模式和代理模式
14. rabbitmq怎么保证消息从生产者端到消费者端不丢失
15. rabbitmq场景题,简单说就是用什么技术手段保证消息传递不重复,高可用,高性能
16. redis过期key的淘汰策略,细问了惰性删除中cpu是采用何种方式支持key的删除的(这个确实不懂)
17. 如何保证缓存和数据库的一致性

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/729805.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

带胶囊按钮的标题是如何实现的

使用uni-app开发小程序经常会遇到胶囊按钮和标题之间融合的问题,因为这样可以大大提高页面的美观和整体性,那么接下来简单拆分步骤看下是如何实现的吧 😁 可以看到我们设置的标题是在默认标题栏之下的(这不是我们想要的效果 &…

Python学习笔记-Flask实现简单的抽奖程序

1.导入flask包和randint包 from flask import Flask,render_template from random import randint 2.初始化 Flask 应用: app Flask(__name__) 3. 定义英雄列表 hero [黑暗之女,狂战士,正义巨像,卡牌大师,德邦总管,无畏战车,诡术妖姬,猩红收割者,远古恐惧,正义天使,无极剑…

【广度优先搜索】【图论】【并集查找】2493. 将节点分成尽可能多的组

作者推荐 视频算法专题 本文涉及知识点 广度优先搜索 图论 并集查找 LeetCod2493. 将节点分成尽可能多的组 给你一个正整数 n ,表示一个 无向 图中的节点数目,节点编号从 1 到 n 。 同时给你一个二维整数数组 edges ,其中 edges[i] [ai…

S4---FPGA-K7板级原理图硬件实战

视频链接 FPGA-K7板级系统硬件实战01_哔哩哔哩_bilibili FPGA-K7板级原理图硬件实战 基于XC7K325TFFG900的FPGA硬件实战框图 基于XILINX 的KINTEX-7 芯片XC7K325FPGA的硬件平台,FPGA 开发板挂载了4 片512MB 的高速DDR3 SDRAM 芯片,另外板上带有一个SODIM…

@Bean详解

上文我们简单的通过注解类bean注解的方式将第三方类注入到了IOC容器进行管理,那么本文我们来详细介绍bean的用法。 1. Bean生成Bean的Name问题 Bean注解源码: public interface Bean {//前两个注解可以指定Bean的标识AliasFor("name")Strin…

SEO关键词策略:如何选取最适合你网站的关键词?

关键词作为SEO的基石,其选取策略直接影响着网站的排名和流量。本文将探讨如何制定有效的关键词策略,以提升网站的曝光度和转化率。 SEO工具:百度指数 首先,我们介绍了百度指数这一强大的SEO工具,它可以帮助我们指数化…

考虑到通信链路中断的(Delay Tolerant Network, DTN)

文章目录 A Study of DTN for Reliable Data Delivery from Space Station to Ground Stationabstractintroduction An Analytical Framework for Disruption of Licklider Transmission Protocol in Mars Communicationsabstract本文贡献 OVERVIEW OF RELIABLE DATA TRANSMISS…

资源池化单集群安装经验总结

登录linux环境通过跳板机用ssh命令连接分配的ip,将准备好的openGauss安装包以及xml文件上传到跳板机用scp命令传到自己的节点。 问题1:预安装包版本问题 解决方法:查看自己机器的系统,至openGauss官网下载正确版本的安装包 open…

Java使用spire.doc操作word文档(合并、插入文字图片和表格、替换书签)

一、引入依赖 <dependency><groupId>e-iceblue</groupId><artifactId>spire.office</artifactId><version>7.5.4</version> </dependency> 二、word操作 1、合并word文档 import com.spire.doc.Document; import com.spir…

SQL中为什么不能使用1=1条件

在SQL查询中&#xff0c;使用11条件是一种常见的技巧&#xff0c;它通常被用于动态构建查询条件或者简化查询语句。然而&#xff0c;尽管11条件在某些情况下可能会有一定的用处&#xff0c;但也存在一些不建议使用的原因&#xff1a; 性能问题&#xff1a;当使用11条件时&…

PostgreSQL教程(二十三):服务器管理(五)之客户端认证

当一个客户端应用连接一个数据库服务器时&#xff0c;它将指定以哪个PostgreSQL 数据库用户名连接&#xff0c;就像我们以一个特定用户登录一台 Unix 计算机一样。在 SQL 环境中&#xff0c;活动的数据库用户名决定对数据库对象的访问权限 — 详见教程二十四。因此&#xff0c;…

[three.js]搭建场景

背景 虽然一直在从事three.js方面的开发工作&#xff0c;但是都是在同事搭建好的场景下工作的。最近接手的任务让我可以从0到1搭建一个场景&#xff0c;顺便复习一下 搭建三维场景 <script lang"ts" setup> import { ref, onMounted } from vue; …

pycharm进入函数定义快捷键

在 PyCharm 中&#xff0c;你可以通过使用快捷键来快速进入函数&#xff0c;而不必通过鼠标点击。以下是几个常用的快捷键&#xff1a; 用鼠标选择函数后&#xff1a; Ctrl B&#xff1a;进入函数的定义。 Ctrl Alt B&#xff1a;进入函数的实现&#xff08;如果有的话&…

目标检测——摩托车头盔检测数据集

一、简介 首先&#xff0c;摩托车作为一种交通工具&#xff0c;具有高速、开放和稳定性差的特点&#xff0c;其事故发生率高&#xff0c;伤亡率排在机动车辆损伤的首位。因此&#xff0c;摩托车乘员头盔对于保护驾乘人员头部安全至关重要。在驾乘突发状况、人体受冲击时&#…

mysql 分组取前10条数据

mysql 分组取前10条数据 1.使用自定义函数 select name,gender,age,rankk from (selectname,gender,age,rankk:if(gengender,rankk1,1) as rankk,gen:gender from t_user,(select rankk:0,gen:null) temp order by gender,age asc) a where a.rankk < 10;2.使用row_nu…

#14vue3生成表单并跳转到外部地址的方式

1、背景 后端返回的json数据中包含一个json数组&#xff0c;此数组中是目标跳转地址所需要的form表单的数据。 2、跳转前的页面 const goto () > {finish.value true;request.post(/xxx/yyy,{zzz: zzz.value}).then(res > {const url res.data.submitUrlconst params…

拉电流、灌电流和漏电流

一、介绍 拉电流&#xff08;source current&#xff09;就是输出电流&#xff0c;即从芯片引脚向外流出的电流&#xff1b;灌电流&#xff08;sink current&#xff09;就是吸收电流&#xff0c;即从芯片引脚向内&#xff0c;流入芯片内的电流&#xff1b;漏电流就是泄露电流。…

在线安装MySQL5.7

在线安装MySQL 安装MySQL5.7 yum -y install mysql57-community-release-el7-10.noarch.rpm 若无可用安装包&#xff0c;执行下面这句 wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm 本地安装 yum localinstall -y mysql57-community-releas…

python异常机制

当代码出现异常后底下代码都不会被执行了&#xff0c;也就是程序崩溃了。当然能避免异常的话尽量避免但是有的时候这个是没有办法避免的。 异常处理 &#xff08;注&#xff1a;异常处理是从上往下处理&#xff0c;所以编写代码时要注意&#xff09; 语法 try:可能出现异常…

【漏洞复现】锐捷 EWEB auth 远程命令执行漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…