202210月巨杉数据库一面
感悟:
面试体验不是特别理想,在一些问题上,提问的方式不具有引导性而且全程黑脸,提前说了某个工具不是很了解,还是被反复问了...emmm是要咋怎。 尬聊了近乎50min
谢了。
面完就感觉应该不用等了。
面试分为三部分:
自我介绍
一、针对项目进行提问
- 项目是偏向算法的吗?
- 介绍一下C++多态
- i++与++i区别,效率上
- 介绍一下C++异常处理机制
- 为什么C有了错误码还有有C++的异常处理
- 学过数据结构吗?介绍一下数据结构与排序算法
- 介绍一下排序算法的时间复杂度
- 树有了解嘛?
- 在你的项目里用到了什么树
- 介绍一下B+树
- 在MySQL中B+是如何实现的
- 索引是如何使用的
走索引地效率一定比全表查找地效率高吗?
- 分析sql【索引定位的记录很多且需要回表,需要重排序】 【SELECT id,age,phone FROM t_account WHERE age = 25 ORDER BY name desc;】
如果排序的字段不存在于当前使用的索引和主键中,则需要去回表查询该字段,并且在server层根据该字段进行排序,所以效率更低,mysql选择了全表扫描来进行查询。
- 什么情况下要回表
- GDB调试有什么技巧
- 服务器项目那些地方用到了锁
- 任务队列中任务具体是什么?
- 是HTTP对象?
- 那是对一个数组上锁?(说错了,后来补充是链表形式)
- HTTP对象具体是有哪些构建地?
- 用到的是什么锁
- 怎么保证线程安全
- 如果不上锁会造成什么影响
- 如何检测服务器性能瓶颈有什么工具?
Linux有自带地工具,可以查看CPU使用情况,当前线程下处理的文件描述符数量,网络吞吐量情况
二、算法题:
公共前缀
class Solution { public: string longestCommonPrefix(vector<string>& strs) { if (!strs.size()) { return ""; } int length = strs[0].size(); int count = strs.size(); for (int i = 0; i < length; ++i) { char c = strs[0][i]; for (int j = 1; j < count; ++j) { if (i == strs[j].size() || strs[j][i] != c) { return strs[0].substr(0, i); } } } return strs[0]; } };
三、反问
部门负责数据的是哪一块的呢?
培养方式?
#巨衫数据库#