字节后端一面

1:拷打实习

2:ES监听binlog怎么做到的,即Canal工作原理,只知道是伪装成从节点获取binlog日志,正解如下

1)canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议

2)MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )

3)canal 解析 binary log 对象(原始为 byte 流);

3:rpc实现原理,不会,只知道咋用,正解如下:

rpc通过动态代理技术在方法执行前后对数据进行封装和解码等,让用于感觉就像是直接调用本地方法一样。

4:进程间通信方式

5:对于微博成千上万的评论,一个评论可能还会有很多回复,你会如何设计这个评论系统?后面问到如何分库,我想着根据评论时间或者地区分库,这些都被提出了缺陷。害,是不是根据评论id分库就行了,求大佬帮忙分析一下。

6:mysql有哪些锁,答得表锁、行锁、全局锁,又问行锁有哪些,答得记录锁、临键锁、间隙锁,后面问到什么时候会设置临键锁、间隙锁,不会,我太菜了。大家感兴趣可以看看这个https://www.cnblogs.com/Terry-Wu/p/12219019.html

7:联合索引(name、age),name like c% && age = 10,索引会怎么走,理解不深,答得不好。chatgpt解释如下:

(1)范围扫描 name LIKE 'c%':数据库首先使用 name 字段的索引来查找以 'c' 开头的所有记录。这会使用索引的范围扫描,找到所有符合 name LIKE 'c%' 的记录。

(2)过滤 age = 10:对于符合 name LIKE 'c%' 的所有记录,数据库接着使用索引中的 age 字段来过滤符合 age = 10 的记录。因为联合索引已经包含 name 和 age,在扫描 name 字段的同时,age 字段的值也会被同时读取。这意味着在使用索引扫描时,可以直接过滤掉那些 age 不等于 10 的记录,从而避免全表扫描。

8:mysql有哪三个日志。这个还算会

9:六大设计原则,只记得迪米特和开闭

  • 单一职责原则(Single Responsibility Principle);
  • 开闭原则(Open Closed Principle);
  • 里氏替换原则(Liskov Substitution Principle);
  • 迪米特法则(Law of Demeter),又叫“最少知道法则”;
  • 接口隔离原则(Interface Segregation Principle);
  • 依赖倒置原则(Dependence Inversion Principle)

10:Redis的String用的什么数据结构,sds的特点,怎么实现扩容的。不知道具体怎么实现扩容的,感觉这里问的有点深。

面完10分钟后挂。

全部评论
5用mongodb比较合适吧
点赞 回复 分享
发布于 08-20 22:54 广东
10. 如果新字符串小于1M,则新空间为扩展后字符串长度的两倍+1; 如果新字符串大于1M,则新空间为扩展后字符串长度+1M+1
点赞 回复 分享
发布于 08-21 00:48 浙江
保融科技
校招火热招聘中
官网直投
登哥转正了怎么不考公还在面
点赞 回复 分享
发布于 08-21 01:19 广东
感觉问得好难感觉问得好难。我也是同一天面的。问得都比较简单。但是手撕没做出来😅
点赞 回复 分享
发布于 08-21 01:20 浙江
登哥搞这么难
点赞 回复 分享
发布于 08-21 10:51 广东
评论感觉适合垂直分库
点赞 回复 分享
发布于 08-21 12:39 北京
哪个部门啊
点赞 回复 分享
发布于 08-21 15:52 广东
好鸡儿难
点赞 回复 分享
发布于 08-21 17:34 广东
登哥,怎么后卫转后端了
点赞 回复 分享
发布于 08-23 23:49 北京
好多八股,为什么没写题呢?我昨天写了两道算法
点赞 回复 分享
发布于 08-28 09:19 香港
大佬这个评论表怎么设计呢,我面其他家的时候也遇到这个问题了,但是我不会可以问一下您的思路吗,非常感谢
点赞 回复 分享
发布于 09-09 23:49 广西

相关推荐

地址栏输入 URL 回车后的过程中,详细展开说下 dns tcp http 协议使用的过程。这篇个人感觉整理得一般,要是刷到了不建议阅读,觉得角度不错可以自己看后面参考和小林重做整理--DNS 解析:● 浏览器缓存 chrome://net-internals/#dns -> hosts文件 gethostbyname库函数-> DNS Server● server 一般显示 本地子网 arp 查询,然后去 isp 查 dns 缓存dns 解析之后,下面进入浏览器内核代码的网络编程部分● 这个时候还没有 http 参与,我们需要事先建立好连接● 调用 socket 相关系统函数,创建客户端 socket● 建立连接的请求直接由 tcp packet 提供信息,往下分别通过网络层,链路层等流程,然后通过某种网络环境,经过路由器进行网络传输在如上的循环中进行 TCP 三次握手(四次挥手也是)● 客户端初始化 isn,设置 syn 位作为第一次 tcp packet 的内容发送● 服务端收到,ack 域设置 isn+1 表示收到。然后同样设置 syn 初始化 isn● 客户端同样设置 ack 位并且 ack 域设置 server isn + 1● (后面确保可靠传输的流程就是把 ack 的数字 编程 + byte 数)如果说,我们在 url 解析阶段(不是 dns 解析)得到的端口是 443,那么我们开始进行 tls 握手● 相互 hello:确定套件算法版本等,主要交换客户端随机数和服务端证书。(一般不做客户端验证,这个是服务端网络编程部分决定的)● 客户端响应:生成第二个客户端随机数 pre master,证书公钥加密传输。并包含 Finish 消息便于做摘要验证    ○ 根据本机信任 ca 列表验证服务端证书    ○ premaster + 客户端第一个随机数 + 服务端随机数 = 生成 = 会话密钥    ○ 验证原理是所有内容先做 sha 摘要下来,然后加上密钥 输入 prf 伪随机数函数得到「验证消息」,客户端通过相同方案来看验证消息是否正确● 服务端响应:同样做摘要得到验证消息    ○ 同上生成会话密钥,密钥不直接做交换。http● 服务器端通过 「http deamon 程序」来处理 http 请求,一般是 nginx apache 或者编程语言 web 框架了。往后一般离用户态比较近了,比较常接触,可定义性也比较强。不过也有有些常见的操作。● nginx 常见操作:url 重写、负载均衡、虚拟主机● web 框架常见操作:    ○ http 整个消息拆分成几个主要部分,关键就是方法,路径    ○ 然后路由处理、过中间件等(待扩展,一时半会我也想不起来有哪些了。--因为感觉这个题目,个人平常都答得太简单了,其实这确实是个引出来常见其他计网面试题的好过程,整理一下主要想串起来其次也是后面就能占据主动了。参考 https://github.com/skyline75489/what-happens-when-zh_CN ,有不对请指出--#每天一篇简单博客 day2 (个人打卡,欢迎监督今天比较水了,不过坚持最重要
点赞 评论 收藏
分享
21 152 评论
分享
牛客网
牛客企业服务