腾讯面经

说一下RabbitMQ和Kafak的区别
redis分布式锁
6. 说一下项目中用的redis分布式锁

  1. 客户端拿到分布式锁后锁超时被redis过期了,客户端释放锁时怎么处理(比较锁的value是否和当初自己设置的value相等)

  2. 客户端释放分布式锁失败后,需要进行什么处理

  3. 怎么实现redis分布式锁的重入(回答了在设置value的时候,设置value为当前机器id+线程id+重入次数)
    说一下SSL连接流程

  4. 场景题:面对大量的IO密集型任务,怎么设置线程池参数来保证最大吞吐量

  5. 使用hashmap时,如果要放入一亿个数据,怎么设置初始容量

  6. 服务器CPU爆满的原因

  7. 怎么排查死锁

  8. redis分布式锁没有释放怎么办)

  9. redis挂了没释放分布式锁怎么办(用集群模式的redis,提高可用性)

  10. 集群模式下的redis分布式锁算法

3、RBAC模型,过滤器和拦截器的区别(不知道)
4、Spring的IOC和AOP,IOC用你的方式去说一下它是什么,有什么好处,AOP是什么,底层原理怎么实现,JDK和CGLIB,CGLIB不用继承的方式怎么实现动态代理
5、请求到SpringBoot到数据返回,是怎么一个流程?(面试官不准我背dispatcherServlet那些八股文,说了一下Servlet和String绑定,用Map的方式,然后数据SpringBoot被装载进来后,调用Servlet进行数据处理)

mysql,数据查询慢怎么办

Java多线程,多线程并发为什么是不安全的(说了可见性、线程随机挂起,数据原子性之类的东西,但面试官说并不是本质)、单核多线程是线程安全的吗?为什么要用多线程,多线程可以干什么?

Spring 框架的 Listener 是什么模式,你用过吗?你对 Spring 的了解是通过什么学习的呢?你能说一下 Listener 的执行顺序吗?

你了解 Spring 的 AOP 编程吗?那 AOP 有几种切面?

你知道 String 类型在 JVM 里面是怎么表现得吗?

String 类型的变量一般存在哪里?这里引出了常量池,然后开始了夺命四连问。
如果我定义了一个 String 类型的私有成员 a1,我给他赋了一个初始值,比如说 “abc”,然后我在另一个类里面,也有一个值为 “abc” 的成员变量 a2,如果比较 a1 == a2,它会相等吗?
如果我在一个方法里面定义了一个局部变量 a3,如果比较 a3 == a1,你觉得会相等吗?
如果 a4 = new String(“abc”),你觉得这个 a4 会和 a3 相等吗?
那如果变量没有 final 修饰,就是 public static String a5,我在构造函数里面给 a5 赋值为 “abc”,你觉得它会和 a1 相等吗?

Nginx 在你在网上看的博客学的吗?那你能跟我说一下 Nginx 能做几层代理的转发吗?它在 OSI 的第几层?它除了应用层还有别的模式吗?它能够代理 SSH 协议吗?
那应用层有什么协议?
SSH 协议你知道它工作在哪一层吗?
WebSocket 你知道工作在哪一层吗?它跟 Socket 有什么区别?

MySQL 的主从你能讲一讲吗?
MySQL 有什么命令可以拿到我当前卡住的 SQL?
慢查询日志怎么开?如何查看历史的慢查询语句?
不开慢查询的话,怎么知道 MySQL 里面哪里语句执行比较久?
你主要熟悉索引这一块是吧,MySQL 的 text 字段可以建索引吗?那如果我只存几个字符呢?它能设前缀索引吗?如果不是前缀索引,就是全列索引,我用 LIKE 查询,LIKE abc%,它会命中索引吗?它为什么能命中索引,匹配顺序是什么样的?如果 LIKE %abc,它会命中索引吗?

永久代是在哪个版本去掉的?MetaSpace 是什么时候出现的?MetaSpace 大小一般建议设置为多少?它有可能会爆吗?

如果物理机有 11G 内存,堆设置了 10G,MetaSpace 设置了 128M,它有可能发生 OOM 吗?什么情况会发生?

你这边主要是做后端,前端有了解吗?前后端怎么交互的?

你用 Java 的时候,遇到内存泄露的问题的话,通常是用什么方式来排查问题的?

作者:钟期既遇
链接:https://www.nowcoder.com/discuss/572500?source_id=profile_create_nctrack&channel=-1
来源:牛客网

7.你了解 left join 和 right join 的区别吗?
8.你用 MyBatis 去操作数据库,我想插入之后返回插入的 id 应该在哪里改一下?
在 xml 中定义 useGeneratedKeys 为 true,返回主键 id 的值,keyProperty 和 keyColumn 分别代表数据库记录主键字段和 Java 对象成员属性名

<!- 插入数据:返回记录主键id值 –>

Spring Boot 用的比较多,能说一下它的核心注解有哪几个,分别是做什么的吗?

设计题:做服务端开发的时候,想实现一个类似于多任务轮询的状态获取,让你来写的话,通常你会怎么设计这一部分?

文章发表和修改,如果这个人在修改博客的时候,假设他在编辑的时候,另外一个人来访问,来看博客的时候,数据是怎么呈现的?
我们在做博客的时候,遇到一个场景,一个人在不断地写这个博客,也在不断的修改,他想回顾他的修改记录时,用什么方式来存储和处理修改记录以及用户怎么看到他的修改记录?

要保证按插入顺序取的时候用什么Map?

mysql 半同步复制

after sync和after commit比较

binlog讲讲

SpringBoot怎么启动的

超时重传 快重传 快恢复

git常用命令

2、数据库题

SQL题目:有一张用户签到表【t_user_sign】,标记每天用户是否签到(说明:该表包含所有用户所有工作日的出勤记录) ,包含三个字段:日期【fdate】,用户id【fuser_id】,用户当天是否签到【fis_sign_in:0否1是】;
要求
(1)、请写出建表ddl
(2)、请写sql统计截至当前每个用户已经连续签到的天数(输出表仅包含当天签到的所有用户,计算其连续签到天数

rdb对redis的性能有什么影响?

mysql主从复制

CLOSE_WAIT和TIME_WAIT状态有什么区别(释放连接时)

服务端一直处于CLLOSE_WAIT状态,可能的原因是什么,有什么排查思路

有一个100亿字符串的文本,如何判断其中是否包含某个字符串

22、wait和synchronize有什么区别,是否能够同时出现

23、SpringCloud简单介绍一下,它的组件

24、Dubbo和springcloud有什么区别,最大的区别是什么

25、RPC是如何实现的,原理

26、分布式系统如何保证一致性

27、CAP理论是什么

TCP真的能保证可靠性吗?

进程切换和线程切换的过程?

14. 算法题非递归快排

15. 递归和迭代的区别?用递归可能出现什么问题?

找到最长回文子串

  1. 稳定算法?快排是么?哪些排序算法是?

UDP和tcp一个是面向数据流,一个是面向报文,直到细节么?

UDP如果过大,咋办?

  1. 常见的前端网络安全?讲了xss和csrf

对大量数据取前10大(讲了长度为10的堆排序、桶、基数以及时间fu复杂度),感觉不该说桶和基数的,计算读10遍复杂度也更低。但我觉得堆排序是最完美了,但是面试官并不满意,也可能我太慌了,没说清楚。

nlgn的算法有什么相同点?表示不大清楚堆排序和其他有什么区别,其他俩都是分而治之,而且没有重叠。

100w个数,怎么找到前1000个最大的,堆排序,怎么构造,怎么调整,时间复杂度。

7 Linux的cpu 100怎么排查,top jstack,日志,gui工具

8 Linux大文件怎么查某一行的内容。

11 秒杀系统的架构设计

12 Linux了解么,查看进程状态ps,查看cpu状态 top。查看占用端口的进程号netstat grep

arraylist初始化做了什么

arraylist扩容 右移越界了咋办

string为什么添加字符开销大?

string添加字符是深拷贝还是浅拷贝

操作系统管道怎么实现的

用户态和内核态的区别

切换发生了什么

预编译,也不能用mybatis,怎么防止?

2.短连接适用在什么场景
3.并发的时候长连接会出现什么问题
4.怎么来解决长连接的这种问题

买了台服务器怎么查看真实带宽

深拷贝浅拷贝,让我自己设计深拷贝

讲HashMap和TreeMap底层数据结构的区别,讲哈希表的底层数据结构和插入过程。

servlet原理了解么?

TCP快连接(不懂)
TCP fast open

Kafka怎么保证发送的消息对方一定能收到?

405是什么?

守护进程

把十进制数转成n进制

概率题:
把一根绳子切成三段,能够组成一个三角形的概率是多少?

软,硬链接

.swap

僵尸进程

  1. i++是原子的吗?为什么不是原子的?会出现什么情况?

  2. 数组的特点?底层如何定位到数组中的元素?数组的内存空间是连续的吗?

  3. 32位操作系统会为每个进程分配多大的内存空间?为什么能为每个进程分配那么多虚拟内存空间?地址空间是连续的吗?

如何快速定位到一个异常?

说一下使用UDP实现可靠数据传输的大体设计思路?

  1. TCP具有超时重传策略?如果一直超时怎么办?如何解决?

  2. 什么排序的时间复杂度可能为O(n)?桶排序和计数排序懂吗?

用过Socket编程吗?进行Socket编程的具体步骤是怎么样的?

同一个计算机上的应用能使用Socket进行通信吗?

粘包

UDP最大包长多少?首部的字段和长度?为什么是1500字节呢?

多进程和多线程?平常用哪个更多?用过多进程吗?

  1. Innodb和ms的区别?具体一点

  2. Innodb有什么优点?具体一点

  3. 为什么需要事务?事务有什么特点?你觉得事务最关键的地方在于什么?

  4. 你知道索引和主键有什么区别吗?

  5. 如果mysql数据库中的数据过多会产生什么问题?你会怎么办?

JVM垃圾收集策略是怎么样的?为什么有垃圾收集还会有内存泄漏问题?

Java里面,既然有了基本类型,为什么还需要包装类型呢?

你说一下递归的优缺点吧,如何优化?如何进行剪枝搜索?

给了一道多进程和多线程的场景题。这个场景下会出现什么问题?为什么会出现这样的问题?你会如何解决呢?

String中有哪些常用的方法?

回答:trim charAt indexof

2.对JVM调优的理解。老年代的大小如何确定,可以通过什么方式去实验?新生代的大小如何确定?

3.jstack,jmap的用法?OOM后jstack显示的信息是什么样的

HTTP协议各个版本的变化,为什么做了这些改变

HTTPS的过程,服务器中的证书与浏览器中的证书有什么关系?证书如何校验?

输入URL访问网页的全过程,重点问了DNS,计算机网络中每一层是如何处理的,如何通过IP得到MAC地址,怎么获取到下一跳地址,如何从局域网内传到局域网外(这部分我答的不好,让我后面加强一下)

怎么判断一个连接是有效的

为什么要用token,token安全性为什么比session高,手机端也可以用session

mysql的索引

可以每一个字段都加索引么

mysql怎么加索引

怎么清空数据

如何删除一个表

如何创建一个表

删除一个表再创建一个表 与 把表的数据全部删除有什么差别

  • 数据库范式

有一个大文件,40亿个无符号整数,有重复的,乱序,对文件排序,单机实现,内存一个G

赛马场8个跑道,64匹马,找出64匹中跑的最快的4匹,最少多少场

SpringBoot启动的生命周期

首部和报文是如何区分的

删除数据库表中的所有数据

跨域

C 和 C++ 的字节对齐

字节对齐的意思是说我们在给特定变量类型分配内存空间的时候,变量的内存地址要是它本身变量类型大小的整数倍。需要字节对齐的根本原因在于CPU访问数据的效率问题。例如,假设一个处理器总是从存储器中取出8个字节,则地址必须为8的倍数。如果我们能保证将所有的double类型数据的地址对齐成8的倍数,那么就可以用一个存储器操作来读或者写值了。否则,我们可能需要执行两次存储器访问,因为对象可能被分放在两个8字节存储块中。

另外,假设一个整型变量的地址不是自然对齐,比如为0x00000002,则CPU如果取它的值的话需要访问两次内存,第一次取从0x00000002-0x00000003的一个short,第二次取从0x00000004-0x00000005的一个short然后组合得到所要的数据;如果变量在0x00000003地址上的话则要访问三次内存,第一次为char,第二次为short,第三次为char,然后组合得到整型数据。而如果变量在自然对齐位置上,则只要一次就可以取出数据。

C语言的编译链接

image-20210329103613272

软链接和硬链接

1、inode节点
Linux操作系统引进了一个非常重要的概念inode,中文名为索引结点,引进索引接点是为了在物理内存上找到文件块,所以inode中包含文件的相关基本信息,比如文件位置、文件创建者、创建日期、文件大小等
硬盘格式化的时候,操作系统自动将硬盘分成两个区域,一个是数据区,一个是inode区,存放inode所包含的信息
在linux系统中,系统内部并不是采用文件名查找文件,而是使用inode编号来识别文件。查找文件分为三个过程:系统找到这个文件名对应的inode号码,通过inode号码获得inode信息,根据inode信息找到文件数据所在的block读取数据
除了文件名之外的所有文件信息,都存储在inode之中

2、软链接和硬链接
软链接可以看做是快捷方式,让你快速链接到目标档案或者目录;硬链接则是透过文件系统的inode来产生新档名,而不是产生新档案

硬链接:A是B的硬连接,则A的目录项中的inode节点号和B的目录项中的inode节点号相同,即一个inode节点号对应两个不同的文件,两个文件名指向同一个文件。A和B对于文件系统来说完全平等。如果删除了其中一个,对另一个没有影响。每增加一个文件名,inode节点上的连接数加一,每删除一个文件名,inode节点上的连接数减一,直到为0,inode节点和对应的数据块才会被回收。
软链接:A是B的软链接,A的目录项中的inode节点与B目录项的inode节点不同,A和B指向的是两个不同的inode节点,继而指向两块不同的数据块。但是A指向的数据块存放的是B的路径名,如果B被删除了,A仍然存在,但是A会指向一个无效的链接。

1
2
硬链接
ln oldfile newfile

软链接

1
ln -s old.file soft.link
1
软链接主要应用于以下两个方面:一是方便管理,例如可以把一个复杂路径下的文件链接到一个简单路径下方便用户访问;另一方面就是解决文件系统磁盘空间不足的情况。例如某个文件文件系统空间已经用完了,但是现在必须在该文件系统下创建一个新的目录并存储大量的文件,那么可以把另一个剩余空间较多的文件系统中的目录链接到该文件系统中,这样就可以很好的解决空间不足问题。删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接就变成了死链接。