深圳丰巢java高级社招面经分享

丰巢科技

1.bio与nio的区别

2.select与poll的区别

3.zookeeper的⼯作原理

5.⼆段式满⾜cap理论的哪两个理论

两阶段提交协议在正常情况下能保证系统的强⼀致性,但是在出现异常情况下,当前处理的操作处于错误状态,需要管理员⼈⼯⼲预

解决,因此可⽤性不够好,这也符合CAP协议的⼀致性和可⽤性不能兼得的原理。

6.线程池的参数配置,为什么java官⽅提供⼯⼚⽅法给线程池

7.分布式框架dubbo的好处,不⽤dubbo可不可以。为什么要使⽤分布式

8.七个垃圾回收器之间如何搭配使⽤

新⽣代基本采⽤复制算法,⽼年代采⽤标记整理算法。cms采⽤标记清理;

9.接⼝限流⽅案

10.ConcurrentHashMap使⽤原理

11.解决map的并发问题⽅案

HashMap不是线程安全的;Hashtable线程安全,但效率低,因为是Hashtable是使⽤synchronized的,所有线程竞争同⼀把锁;⽽

ConcurrentHashMap不仅线程安全⽽且效率⾼,因为它包含⼀个segment数组,将数据分段存储,给每⼀段数据配⼀把锁,也就是所谓的锁分段技

术。

12.什么是协程,以及实现要点

13.lru cache使⽤hash map的实现(算法)

14.图的深度遍历和⼴度遍历(算法)

15.基本排序(算法)

1.快速排序:

2.冒泡排序:

3.直接插⼊排序:

4.直接选择排序:

16.设计模式的使⽤

17.java 8流式使⽤

18.说说b+树?

19.内存屏障与volatile:

20.java域的概念

field,域是⼀种属性,可以是⼀个类变量,⼀个对象变量,⼀个对象⽅法变量或者是⼀个函数的参数。

21.分布式设计领域的概念

49

23.mysql调优

27.写⼀个redis分布式锁:

28.spring 7种事务的传播⾏为:

PROPAGATION_REQUIRED如果当前没有事务,就新建⼀个事务,如果已经存在⼀个事务中,加⼊到这个事务中。这是最常⻅的选

择。

PROPAGATION_SUPPORTS⽀持当前事务,如果当前没有事务,就以⾮事务⽅式执⾏。

PROPAGATION_MANDATORY使⽤当前的事务,如果当前没有事务,就抛出异常。

PROPAGATION_REQUIRES_NEW新建事务,如果当前存在事务,把当前事务挂起。

PROPAGATION_NOT_SUPPORTED以⾮事务⽅式执⾏操作,如果当前存在事务,就把当前事务挂起。

PROPAGATION_NEVER以⾮事务⽅式执⾏,如果当前存在事务,则抛出异常。

PROPAGATION_NESTED如果当前存在事务,则在嵌套事务内执⾏。如果当前没有事务,则执⾏与PROPAGATION_REQUIRED类似的

操作。

29.分布式下down机的处理⽅案(⼼跳检测)

1、dubbo:服务器宕机,zk临时被删除;

2、springcloud:每30s发送⼼跳检测重新进⾏租约,如果客户端不能多次更新租约,它将在90s内从服务器注册中⼼移除。

3、apm监控:

30、分析下分布式强⼀致性、弱⼀致性、最终⼀致性?

1.强⼀致性:当更新操作完成之后,任何多个后续进程或者线程的访问都会返回最新的更新过的值。这种是对⽤户最友好的,就是⽤户上⼀次

写什么,下⼀次就保证能读到什么。根据 CAP理论,这种实现需要牺牲可⽤性。

2.弱⼀致性:

系统并不保证续进程或者线程的访问都会返回最新的更新过的值。系统在数据写⼊成功之后,不承诺⽴即可以读到最新写⼊的

值,也不会具体的承诺多久之后可以读到。

3.最终⼀致性:

弱⼀致性的特定形式。系统保证在没有后续更新的前提下,系统最终返回上⼀次更新操作的值。在没有故障发⽣的前提下,不⼀

致窗⼝的时间主要受通信延迟,系统负载和复制副本的个数影响。DNS是⼀个典型的最终⼀致性系统。

31、dubbo与zookeeper两者作为注册中⼼的区别,假如注册中⼼挂了,消费者还能调⽤服务吗,⽤什么调⽤的

1.注册中⼼对等集群,任意⼀台宕掉后,会⾃动切换到另⼀台

2.注册中⼼全部宕掉,服务提供者和消费者仍可以通过本地缓存通讯

3.服务提供者⽆状态,任⼀台宕机后,不影响使⽤

4.服务提供者全部宕机,服务消费者会⽆法使⽤,并⽆限次重连等待服务者恢复

32、dubbo的原理图(画出注册中⼼,消费者,⽣产者的关系图,并说出每个⻆⾊的作⽤)

Consumer服务消费者,Provider服务提供者。Container服务容器。消费当然是invoke提供者了,invoke这条实线按照图上的说明当

然同步的意思了。但是在实际调⽤过程中,Provider的位置对于Consumer来说是透明的,上⼀次调⽤服务的位置(IP地址)和下⼀次调

⽤服务的位置,是不确定的。这个地⽅就需要使⽤注册中⼼来实现软负载。

33、项⽬中有没有⽤到多线程?

1、发送邮件、短信,使⽤多线程异步发送;

2、定时任务使⽤线程池;

34、HashMap的底层原理(包括底层数据结构,怎么扩容的)

35、ConcurrentHashMap的原理

36、分布式锁的实现

基本原理:⽤⼀个状态值表示锁,对锁的占⽤和释放通过状态值来标识。


#丰巢科技##面经##java工程师##社招#
全部评论
https://job.toutiao.com/s/eoF2b6M字节内推,全程跟进度哟
点赞 回复 分享
发布于 2021-08-13 00:45
这么难 ?来快手https://campus.kuaishou.cn/recruit/campus/e/#/campus/jobs?internalPerson=3pbh0Odym9o3pkmDrLAbhg%3D%3D
点赞 回复 分享
发布于 2021-08-13 23:19

相关推荐

一名愚蠢的人类:多少games小鬼留下了羡慕的泪水
投递荣耀等公司10个岗位
点赞 评论 收藏
分享
威猛的小饼干正在背八股:挂到根本不想整理
点赞 评论 收藏
分享
评论
3
26
分享
牛客网
牛客企业服务