5.10 字节后端一面
选一个项目介绍项目难点,怎么解决的(鼠鼠的项目没什么亮点,随便讲了个自制的类型擦除解决运行时需要不定个数不定类型参数的函数调用,和用c++20协程实现的通信管理)
为什么要用c++20协程(比回调更容易看懂好维护)
进程和线程的区别
线程同步的方式
两个线程共享变量如何避免冲突
除了加锁还有什么方式(原子类型std::atomic<T>,go channel)
CRTP了解么(奇异递归模板模式,模板基类的类型参数是它的派生类)
为什么需要这个(基类需要获取派生类的信息,实现静态多态,例如std::enable_shared_from_this<T>)
TCP和UDP的区别
UDP的使用场景
TCP会有丢包问题么,怎么解决的
随便聊聊语言
java为什么要搞jvm(胡扯了一些。。JIT某些情况下可能比AOT性能高,JVM也能跑别的语言Scala之类的,诞生的口号就是Build once, run anywhere,编译一次在任何系统上装JVM就能运行)
既然JVM有这么多好处,go又为什么不需要而是直接编译成二进制(继续扯。。比较适合云原生场景,每个容器都得装JVM体积太大)
MySQL索引的实现
为什么要用B+树而不是红黑树之类的
聚簇索引和非聚簇索引的区别
B树插入一条数据的过程
255级B树在多少条数据时会达到瓶颈
索引失效的场景
手撕:1. O(n)时间求字符串中含有’a’,’b’,’c’的子串数量
写了个滑动窗口过了给的三个用例,面完细想又感觉好像有点不对
2.给一排树的坐标和高度,砍掉的树不能互相覆盖也不能砸到没砍的树,求最多能砍多少树
只让讲下思路,感觉是三个状态加上条件判断的打家劫舍
#字节面经##软件开发2024笔面经#