字节二面

自我介绍

MySQL性能问题

  • 问题:MySQL到60W条数据之后就不行了
  • 优化方法:加索引

索引底层原理

  • B+树
  • B树与B+树的区别
    • B树:一个节点存所有信息
    • B+树:非叶子节点存的是比较信息,B+树会显得是矮胖型的
    • 矮的含义:非叶子节点存储的信息少,如果把信息看着高度,B+树会显得矮
    • 好处:查找需要磁盘到内存的IO,这种设计IO的数据量少

联合索引问题

  • 问题:联合索引失效
  • SQL问题:未回答上来
  • 项目建索引建议
    • 建议:联合索引
    • 理由:查的时候要从省份查到村

服务类型

  • 单机服务
  • 分布式了解:了解过,原来用nginx的轮询来轮询两台服务器

nginx分布式配置

  • 问题:如何将nginx做成分布式的?

URL到网页的过程

  • DNS解析
  • HTTP请求前端
  • 浏览器渲染再次请求

存储省份和市区信息

  • 使用zset
  • 为什么快:跳表,复杂度降到log(n)
  • 为什么不使用hash:hash的实现和时间复杂度未提及

进程与线程

  • 进程:操作系统管理,切换代价大,内存隔离性高
  • 线程:进程管理,可以共享内存
  • 进程间通信:管道,socket,共享内存

TCP协议

  • 滑动窗口:防止消息覆盖
  • 慢启动:初始值较低,指数上涨探寻最大网速

字符串处理

  • String,StringBuffer,StringBuilder的区别
    • String:内存分配
    • StringBuilder:为了让字符串操作更快,改进了String的不可变性

虚拟内存

  • 思路:一部分暂时不用的分到磁盘,用了再load到内存里面
  • 是否连续:不是
  • 如何取得物理位置:操作系统管理,C语言有对应函数(具体函数未提及)

线程安全与并发

  • 了解过线程安全和并发写竞争
  • Java同步:synchronized
  • 分布式同步:Redis分布式锁

锁问题

  • 锁重入问题:使用LUA脚本串行解决(具体细节未提及)
  • 服务挂掉问题:给锁加过期时间
  • 业务执行长问题:未提及具体解决方案

算法问题

  • 题目描述:奇数位升序,偶数位降序的单向无环链表升序排序
  • 输入:1->10->5->9->12->0
  • 输出:0->1->5->9->10->12
  • 初始思路:奇数压到队列,偶数压到栈
  • 面试官建议:原地拆链,偶数链反转,合并
  • 问题:空间复杂度优化

闲聊与面试建议

  • 面试官提到面试者的博客和GitHub,询问是否都是自己编写的内容
  • 面试者提到操作系统和编程语言的学习背景
  • 面试建议:在考虑解决方案时思考应更深入,不应直接跳到使用Redis
#字节##字节面经##面经##软件开发2024笔面经#
全部评论

相关推荐

7 53 评论
分享
牛客网
牛客企业服务