字节一面面经

今日头条——懂车帝 golang后端开发实习生

第二天上午电话通知一面通过,约二面的时间。面完之后心如死灰,没想到还是通过了,字节真好,我爱字节。

问项目:

Q:为什么要用一致性哈希算法?

A:负载均衡,不需要重新缓存所有数据。

Q:利用一致性哈希算法增加一个节点需要重新缓存多少的数据?

A:假设有3个节点,增加一个节点应该需要重新缓存1/4的数据

Q:singleFlight在代码层面是怎么实现的?

A:主要提到了sync.Mutex和sync.WaitGroup。

Q:那singleflight机制其他的线程在共享第一个请求结果的时候是串行执行的吗?

A:(这个回答的不好)是的,其他的线程确实会阻塞,因为singleFlight机制是为了避免缓存击穿,确实会造成阻塞,这个没办法避免。

Q:raft算法的核心思想是什么?

A:Leader选举,日志同步,日志压缩等等。

Q:有了解其他的一致性算法?

A:没有了解。

Q:分布式系统的CAP原则是什么?

A:这个不太了解,讲了讲线性一致性,节点同步等等问题。(CAP应该是,一致性,可用性,分区容错性)

问八股:所有的八股题都回答的不太好,没怎么复习。MySQL和redis完全不会。

Q:讲讲POST和GET请求的区别?

A:只讲出一个,GET请求在消息头部,POST请求数据在消息体。

Q:Https对比Http有哪些改动?

A:讲了一下TLS流程,然后CA证书,密钥。(回答的很乱)

Q:讲讲Redis的持久化机制?

A:RDB,AOF

Q:Redis的数据结构有了解吗?

A:有了解,string,哈希,list,set。

Q:如果我想实现一个延时队列,可以用哪一个数据结构实现?

A:想了很久,没有思路,不会。

Q:B+树和B树的区别?

A:B+树只有叶子节点存放数据,非叶子节点存放索引,查询比较稳定;B树所有的节点都存放数据,查询不稳定。面试官继续问,还有吗?这一部分真的不会,面试官也没有为难,补充了一下说你说的查询快只是针对范围查询。

Q:golang当中是值传递还是地址传递?

A:golang中只有值传递,没有地址传递。

Q:如果我对于一个函数传递的参数是slice,那么函数中的操作是会改变外部变量的吧?

A:是的,会改变

Q:但是有一种情况不会改变外部变量,你讲讲是哪一种情况?

A:尴尬了一分钟,我实在不会。面试官补充说,如果需要扩容的话,函数内部会复制一个变量,这个时候不会改变外部的变量

笔试题:

时间复杂度O(1)的限制下实现Insert(val),Remove(val),GetRandom()三个函数,GetRandom函数要求每一个值被返回的概率相等。

用一个map和array实现了。

全部评论
最后一个问题 这个的话是因为你无论传递什么 都是一个副本,关于为什么会改变,是因为切片内部的存储的地址是一样的,所以看起来操作会有改变,假定发生了扩容,切片扩容不会复用之前的地址,函数内的副本就变成了新地址,函数外的却没有改变
2 回复 分享
发布于 2023-10-08 21:15 陕西
佬是15445和6.824吗
1 回复 分享
发布于 2023-10-30 12:32 湖北
实习为什么这么难啊,佬tql
点赞 回复 分享
发布于 2023-11-18 10:03 湖南
懂车帝过了吗,大佬
点赞 回复 分享
发布于 2023-10-15 14:20 湖北
项目像geektutu的那个啥
点赞 回复 分享
发布于 2023-10-05 21:07 浙江
还可以
点赞 回复 分享
发布于 2023-10-01 18:18 湖南
项目是6824吗?
点赞 回复 分享
发布于 2023-10-01 11:53 辽宁
啥时候面的😂
点赞 回复 分享
发布于 2023-09-30 15:19 云南

相关推荐

不愿透露姓名的神秘牛友
05-21 00:29
招商银行·招银网络科技 后端开发 总包30W 硕士985
点赞 评论 收藏
分享
05-10 17:11
门头沟学院 Java
秋招过去了好久,是时候更新一下面经了一面- 拷打实习项目- 实习项目亮点- 拷打项目(折磨)- 为什么要用两级缓存- caffine淘汰策略(没看过)- 为什么本地用top50,我说是top30行不行,(预估,预热)- 如果千万级是什么方案- 为什么要牺牲一致性(CAP, BASE扯了下)- 1000w用户需要怎么做- 定时器放在那里- 怎么做数据预热- 这里battle了巨久,感觉没有回答想要的点- springboot启动流程- java bean是什么(这里我说get set方法,他说应该从IOC里面说)- IOC是什么- IOC有什么好处(说了解耦,他问还有呢,从使用者和组件开发者的角度,我是真不会啊)- 又扯了巨久,真不会回答- 手撕:验证搜索二叉树二面- 项目拷打吧20min,其实感觉也没讲明白- raft协议- raft能应对脑裂吗- ES原理- 有实际运维部署经验吗)无- 时间久远其他问题记不得了- 手撕:交叉链表三面- 拷打项目- 说说SQL的执行的整个流程- 为什么要用逻辑执行计划- 你知道MySQL优化器会优化那些内容吗- innodb引擎索引结构- 二级索引结构- b+树和b树有什么优势- 为什么二级索引叶子节点要放主键值而不是一个指针)说的页分裂不知道对不对- 知道最左匹配原则吗- undo log, redo log, bin log都说说- redo log写到内存里如何保证能刷盘(3个参数)- 事务两阶段提交的过程- MVCC实现的原理- 进程和线程的区别- 用户态和内核态的区别- 怎么从用户态切换到内核态- 在编程的时候如何减少用户态到内核态的切换)这里纯在乱答- 协程有了解吗- 说下多路IO复用- 讲下4次挥手)捏马的有点忘了状态名字了,说了两遍才说懂- 为什么time_wait是2MSL为什么不是1MSL,为什么不是3MSL- fork知道吗,fork返回的值是什么- a = fork() b=fork() print(a,b) 这个最后产生几个进程,打印的内容是什么- 了解哪些排序- 快排复杂度推导一下- 归并的复杂度推导一下- 链表做归并的时候需要从中间节点断开,这个相比归并数组会影响时间复杂度吗- LRU思路讲下- 手撕:链表排序- 一共一个半小时,强度有点大,有些推导性质的东西确实不记得了,只记得结论了。还得下来多看下
点赞 评论 收藏
分享
05-16 10:17
河南大学 Java
全程50分钟,项目和实习没问,都是八股手撕:接雨水1、hashmap怎么实现的;扩容因子设置过大和过小有什么问题,为什么是0.75;为什么要选红黑树;可以用跳表来替换红黑树吗(这个点答的不是很好)2、concurrent hashmap线程安全原理,1.7和1.8的区别3、synchronized和 ReentrantLock的异同点;为什么有了synchronized之后,后面还要有ReentrantLock4、synchronized和 ReentrantLock的底层如何实现的5、垃圾回收机制介绍一下;G1还有新生代和老年代的概念吗;G1和CMS比有哪些优势6、浏览器打开一个url涉及的过程,结合计算机网络的角度详细说一说7、HTTP请求头常见的字段有哪些,保持长连接的字段是什么;加了keepAlive连接就不会中断了吗,怎么维护这个连接呢,何时中断(这一点回答的一般)8、HTTP响应码 500、501、502……  介绍一下,以及收到这些返回码如何排查问题9、HTTPS如何建立连接的,TLS的整个过程 ;HTTPS为什么要有不同版本的加密算法,这些不同版本的加密算法为了去解决什么问题(这点回答的一般)10、TCP的可靠性保证;拥塞控制详细介绍一下;11、TCP层和应用层用到的数据包是不一样的,可能应用层数据包有的时候比传输层包大,有的时候比更小。粘包和拆包的问题,如何解决12、网络忙时和闲时路由的选择是不一样的,路由选择协议。(说了几个路由选择协议的名字,具体原理有点忘了)
查看13道真题和解析
点赞 评论 收藏
分享
评论
20
148
分享

创作者周榜

更多
牛客网
牛客企业服务