社招一年,拿到字节offer

总体而言,整个过程更看你回答的条理与深度,不太需要面面俱到,有自己的理解和思考反而会加分,不需要每道题都回答得百分百,有些问题属于面试官顺带提一嘴,但重点问题要答好。

一面

介绍下项目,因为项目涉及到分布式定时任务,问了下如何保证同一时间只有一个任务在跑。

因为里面用到了elasticjob,聊了下分布式定时任务框架。

怎么保证数据库数据不会重复插入?

唯一索引。

mysql和oracle的区别?

主要是上家公司用到了oracle,实际上面试官不太了解oracle,答一些大致的如oracle和mysql性能上的差异、一些sql语法细节的不同。

mysql分页的缺点?

mysql每次都分都是扫描offset+limit条数据,在深分页的情况下性能劣化很快。

如何解决深分页的性能问题?

先查主键,再根据主键查记录。或者利用索引,加个查询条件提高速度,如id>XXX。

给了个模拟场景写sql,问需不需要建索引。

进程和线程的区别?

进程是程序执行的实例,包含了程序代码、数据以及执行状态等信息。线程是进程中的一个执行单元,是CPU调度的基本单位。进程间与线程间通信方式不同、性能开销不同。

只有单核的情况下是不是只用进程就可以,不用线程。

什么是二叉树,二叉树的好处?

每个节点最多只能有两棵子树。快速查找和插入

给了到easy的算法题(寻找二叉树的公共祖先)

二面

答一下java中线程的五个状态?

一开始按操作系统答了,阻塞,就绪,等待,运行,结束。

面试官要求具体到java中的,答了canceling,running,stop,waiting,blocking。

阻塞和等待的区别?

还是按操作系统的线程答了,他说那在java中的等待就是在等cpu时间吗,我才反应过来是问wait方法(加入等待队列等等)。java调用wait的整个过程。

Arraylist<Integer> 和Arraylist<String>调用getclass返回的是同一个对象吗?为什么?

是。因为是泛型,虚拟机编译的时候只记录Arraylist。

了解类型擦除吗?(上一题想要引申的点,面试官主动提了)

什么是类型擦除?

什么时候确定类型的。(编译时编译器自动插入类型转换)

问了下索引失效情况?

其实就是在问联合索引的最左匹配原则。

explain语句,会返回什么,各个字段具体有什么取值。

给了道hard难度,直线上点最多的个数。

细节和边界没考虑好,算是对了思路,面试官不太满意,再给了道智力题(赛道与狗)。

三面

聊了下zookeeper,为什么用zookeeper做分布式协调中心,有对比过其他的吗?

有监视器。zk侧重CAP中的CP。Eureka是ap

zk怎么知道什么时候删除节点?

心跳链接(其实这里应该具体说说的,zk里面配置ticktime)。

心跳链接一断开就会删除节点吗?

是。

面试官给了问题当做提示,如果断开心跳链接后面又连接上怎么办?

立马反应过来答了sessiontime。

hashmap和concorruenthashmap的区别?

为什么hashmap不是线程安全的?

设置一个值的经过。

concurrenthashmap设置一个值的过程(cas与加锁)。

问了下redis的分布式锁,答了setnx,问了缺点,后面又问redlock。

后面又问redis的sortedset是怎么实现了,答了跳表。

跳表和红黑树的区别。

针对红黑树的缺点(范围查找),设计一种红黑树的区间查找算法(人傻了),答了加个双向链表,要求不改数据结构,乱答了。

给了到medium的lc(判断一个图是不是一个树),写得比较好,面试官问了下思路就过了。

总的来说很多知识点需要一个系统的梳理与学习,才能做到在面试的时候,不管面试官怎么问,都能很快地反应过来考验的是哪个知识点。特别是在项目环节,很多面试官会问诸如为什么这么设计、这么设计会有什么问题、假如是在XXX情况下,系统会遇到什么问题如何解决等发散型问题,如果只是浅显理解或者梳理不完全,有时候会反应不过来答不到点上,导致面试扣分。

为了方便日后复习,在这里精心整理了一份服务端的思维导图,既有进阶内容如云原生、分布式基础、计算技术、存储技术、中间件技术的内容,也有基础知识如计算机基础、数据库技术、网络技术。每个大类都有细分,关键知识点会有对应的博客网页,跳转过去即可学习。

关注公众号【不腾】,回复【服务端】即可获取。

  • 24
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值