2021年2月28日面经汇总——记,第一次社招(下)

2021年2月28日面经汇总——记,第一次社招(下)

2021年2月28日面经汇总——记,第一次社招(下)

服务部署的形式?如果某个机房宕机了呢?是依赖组件还是业务自己做的?了解这块是怎么做的?

2.流量突增平台会怎么处理?

3.kafka在业务中的使用场景

4.针对项目中的一个小问题,了解整个调用链路

线程交叉打印 12A34B56C,多种实现方式(一个打印数字,一个打印字母)

方法一:使用ReentrantLock的多个condition
方法二:使用一个全局的原子Integer,在打印过程中递增,若是1或2的倍数则打印数字,若是3的倍数则打印字母。循环判断,不加锁,乐观锁实现。

Synchronized和lock的区别

  • synchronized是关键字,Lock是一个表示锁的接口
  • synchronized表示隐式锁,Lock是显示锁
  • synchronized在JVM层面进行了优化,Lock没有
  • synchronized只支撑一个condition,Lock支持多个Condition
  • synchronized使用结束会自动释放锁,表现在字节码中会自动加入monitor exit,Lock要手动释放锁,一般需要写try…finally结构。

synchronized的锁优化是怎么样的

String str=new String (a+b)会创建几个对象?字符串常量池在JVM哪个位置

对象有a、b、a+b和str,四个对象
字符串常量池在堆中。

Spring的设计模式?工厂模式是怎么实现的

工厂模式、代理模式、单例模式

Kafka的大概框架是怎么样的?为什么吞吐量这么高?kafka的多个副本能提高它的读写性能?为什么这么设计

kafka的精准一次是怎么设计的?平常为了防止重复消费是怎么做的?

12.哨兵模式是为了解决什么?整个流程大概是怎样的

13.Java进程不见了,怎么定位?

Mysql的事务特性?原子性是怎么实现的

事务特性ACID:
原子性:事务内的操作要么都执行,要么都不执行
一致性:事务之前前后,数据保持一致
隔离性:多个事务之间互不影响
持久性:事务一旦提交,事务对数据的影响将被持久化到硬盘中。

要实现原子性就必须在事务中当出现失败的操作时要进行回滚,回滚使用了undo log。

Mysql的默认隔离级别?什么是不可重复读

可重复读。

不可重复读表示了在一次事务操作中,多次查询得到的数据不相同。

16.select语句的执行过程

select poll epoll的区别?epoll的数据结构

18.TCP三次连接,这个listen backLog有什么作用

TCP四次挥手,Time WAIT发生在哪方?两个超时重传时间的作用?大量 timeout怎么处理?

TIME_WAIT状态发生在客户端,当客户端向服务器端发送了第4次挥手之后,就进入TIME_WAIT状态,并在最懂2MSL时间之后,进入CLOSED状态。

https的加密过程?证书认证的过程

  1. 浏览器向服务器发起一个HTTPS请求,服务器端向浏览器发送了一个证书公钥。
  2. 浏览器验证证书的有效性,若有效,则生成一个随机值。
  3. 使用公钥加密随机值,发送给服务器端。
  4. 服务器端使用私钥解密,得到随机值。
  5. 这样子,客户端和服务器端都拥有了相同的随机值,使用这个随机值对要传输的内容进行对称加密传输

21.进程间的通信方式?有哪些信号通信是不可靠的?为什么是不可靠的?

线程死锁的情况,怎么解决?

23.1 2 35 5 35 2 56

统计2 35出现的次数,按序排序

24.请求出现超时,但应用查不到这个请求日志,怎么排查

25.僵尸进程怎么解决?协程有了解过嘛

第二面

1.算法题

一个字符串,一个子字符串,判断子字符串在字符串中出现的次数,不要求连续,但有先后顺序 s=rabbbit t=rabbit,出现的次数为3

2.项目的挑战

3.Kafka和rocketMq的区别

4.本地缓存和redis缓存的区别

5.本地缓存的场景

6.redis的数据更新策略之类

7.redis的部署方式,集群部署的丢失数据,主备切换过程

8.Flink使用了什么功能

第三面

1.项目介绍

2.在项目中用了Spring boot是怎么使用的?

3.线程池项目中怎么使用,遇到过什么问题

4.hashMap的了解

threadLocal项目中怎么使用

ThreadLocal在项目中用于保存线程所拥有的变量,是一种空间换时间的方式,使用ThreadLocal保存的变量,是线程安全的。

乐观锁和悲观锁的区别,项目中的使用

乐观锁认为程序会往好的方向发展,并发不会造成资源的竞争。在项目中CAS就是使用的乐观锁思想,在程序中使用就是原子类,AtomicInteger。悲观锁是一种悲观地认为并发会导致线程不安全的思想,所以需要用锁的方式,对并发进行限制。在程序中使用就是各种锁的使用,比如synchronized和ReentrantLock。

7.题目:生产者和消费者的实现,wait 和notify

synchronized 和ReentrantLock区别

  1. synchronized是关键字,是内部锁,ReentrantLock是显示锁
  2. synchronized在JVM中进行了支持,使用字节码monitor enter和monitor exit进行了支持。
  3. synchronized只支持一个conditon,ReentrantLock支持多个condition
  4. synchronized不支持中断,ReentrantLock支持中断

9.CPU的内存模型

10.Java的内存模型

11.tcp的可靠性保证

为什么索引能查询速度

数据库的数据是保存在硬盘中的,相比起内存和CPU的速度,从硬盘中读取信息才是决定数据库速度的决定性因素。所以要让查询速度快,就要解决从硬盘中查询速度的问题。要从硬盘中快速查找,只能减少查找的次数,也就是减少IO的次数。索引就是这样预先对数据库的数据进行了组织,可以起到减少IO次数的作用,所以索引可以加快查询的速度。至于为什么索引可以减少IO,关键就在于B+树算法。

13.redis数据结构,排行榜的实现

分布式事务的实现

15.Spring事务
16.Spring Bean的存储

17.Java数据源怎么使用

序: 腾讯最终还是挂在了三面,面试的问题难度总体还行,不算太难,可能有些部分准备的不是很充分!

网易

guava和caffeine的区别

2.HashMap作为本地缓存和caffeine的区别,本地缓存一般占用多少内存

3.jvm的堆内存配置大概是怎么的,如果设置了堆内存的初始值为2g,启动的时候分配给这个进程的内存是多少

容器内存为3g,堆内存为2.8g,会有什么问题

容器内存为3g,堆内存在2.8g,不清楚释放有其他占用内存的进程,但是到这个程度,堆内存即使没有挂掉,也会频繁GC

5.创建很多线程池,导致oom,这种跟因为本地缓存太多导致的oom有什么区别

6.堆内存和栈内存的区别

redis缓存的数据一致性问题,分布式锁是怎么样的

8.redis集群的架构是怎么样的

HashMap是线程安全的嘛?ConcurrentHashMap是怎么实现的

HashMap不是线程安全的,ConcurrentHashMap使用了分段锁,在加锁的时候,对某一段进行加锁,减少了等待锁的时间。所以可以保证速度的同时,也保证了线程安全。

10.Synchronized锁的实现

11.锁优化是怎么样的,偏向锁是怎么样的

12.采用的是什么垃圾收集器?CMS跟其他老年代垃圾收集器的区别?CMS跟G1的区别

13.动态代理的区别

14.Spring Aop的实现

15.zookeeper的ZAB协议

16.项目中主要负责的是什么?方案设计大概是怎么样的,比较难的问题以及是怎么解决的

17.future.get()是怎么实现的,futureTask的了解

18.服务怎么做高可用,进程是怎么监控的

19.在浏览器上输入一个网址,大概执行过程,链路层,网络层路由器选择

20.操作系统的内存管理

第二面

1.细聊了一下项目

2.数据库的索引,存储引擎的一些问题,平常怎么优化

3.缓存的一些基本问题,一致性怎么保证,大概架构

4.服务高可用的实现

5.Kafka的大概介绍,可靠性保证,重复消费问题

6.项目难点

7.一致性算法介绍

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值