7.28字节生活服务一面凉
自我介绍
项目拷打
- 短连接服务是怎么做的?
分为两个接口,转链和根据短链返回长链。转链操作使用发号器得到序号,将序号映射成62字节的字符串作为短链地址,将长短链映射存入MySQL做持久化保存。读操作做redis缓存,简单做一些边界逻辑判断之后从数据库里面找出对应长连接然后返回302跳转即可。
- 说说转62进制是怎么做的。
- 你的短链接可以支撑多少qps?没有测试过,写过test可以支持一秒万条的并发请求。
- 你能不能根据你用的这些中间件估算一下大概有多少qps?不会
- 假设100万qps的情况,你要怎么优化你的写和读服务。(答错)给redis配置集群模式提高redis的性能,支撑读操作可以满足百万qps的情况。百万qps写压力可能比较大,MySQL做集群提高性能(实际上MySQL的集群只能提高读能力,不能提高写能力)。MySQL上应该做多实例分库分表并加入消息队列做异步处理。
- 另一个项目有什么想补充的。
八股
- MySQL有什么索引类型?
- 这些索引底层结构了解吗?
- MySQL有什么隔离级别?
- 进程间有哪些通信方式?
- 哪个方式效率最高?共享内存,为什么是共享内存?共享内存直接读写,管道需要拷贝之类的操作。
- 输入URL到得到数据反映在页面上的流程。
DNS+TCP连接,之后发送HTTP请求,服务器解析并返回需要数据,浏览器解析HTTP报文得到需要的响应体进行页面渲染。
- IO多路复用怎么实现的?(不会)
- 知道select或者epoll吗?(不知道)
算法
- 给定第一个大文件,限制内存大小为1M,反正就是一次无法读入,做排序并输出。位图最优、归并排序次之。说个思路
- 旋转有序数组:一个有序数组在随机位置翻转之后,给定翻转的数组(有序被打断),使用二分查找找到给定target的下标。
- leetcode105变体,根据二叉树的前序和中序直接推出后序
两三个没见过说不上来,算法不会秒挂,老实刷算法去了