字节跳动商业变现测试开发面经
# 一面(4.24)
1. 输入URL到页面显示之后的整个过程
2. 网络七层模型
3. http和https的区别
4. TCP和UDP的区别
5. 视频面试用的是TCP还是UDP
6. Linux命令
7. 找出指定端口被哪个进程占用(Linux命令)
8. 简历上的项目是基于怎样的需求下完成的
9. 针对项目进行提问
10. redis都有哪些了解
11. redis支持哪些数据类型
12. redis是单线程还是多线程的,为什么这样设计?
13. redis和其他数据库的区别
14. SQL语句
15. 算法:删除驼峰式字符串
给定一个驼峰样式的字符串例如“AaABbBcBbcvQv…”->“bc”,两个一样的字符夹着一个不一样的字符且中间的字符和两边的字符大小写相反, 处理这个字符串去掉所有的驼峰。
//AaABbB //AaABbBbb //AaABbBbBbcbcQv bool fun(char ch1, char ch2) { return (isupper(ch1) && islower(ch2)) || (islower(ch1) && isupper(ch2)); } string deletestr(string& str) { vector<pair<int, int>> vec; int len = str.length(); int i = 0; int j = 0; int count = -1; while (i < len - 2) { if (str[i] == str[i + 2] && fun(str[i], str[i + 1])) { vec.push_back(make_pair(i, i + 2)); count++; //j = i + 2; i++; while (i <= vec[count].second) { if (i + 2 <= len - 1 && str[i] == str[i + 2] && fun(str[i], str[i + 1])) { vec[count].second = i + 2; } i++; } i = vec[count].second + 1; } else { i++; } } vector<bool> tmp(len,true); string res; for (int i = 0; i < vec.size(); ++i) { int first = vec[i].first; int end = vec[i].second; for (int k = first; k <= end; ++k) { tmp[k] = false; } } for (int i = 0; i < len; ++i) { if (tmp[i]) { res += str[i]; } } return res; }
16. 硬币问题
```
目前有1分,3分,5分面值的硬币,要组成一个10分面值最少需要几个硬币
```
17. 微信图片发送测试用例设计
# 二面(4.27)
1. C++内存空间
2. 堆和栈的区别
3. 多态
4. 进程和线程的区别
5. 进程调度算法都有哪些
6. LRU的实现
7. 实现单例模式(懒汉),考虑线程安全
8. 快排的实现
9. 给一组数字,根据快排,第1次,第2次....的排序结果说一下
10. 输入域名,长时间没有得到回应(原因排查)
11. 头条搜索框测试用例
12. 反问环节
# 三面(4.28)
1. 深挖项目
2. 一个文件,有两列数据,第一列是时间戳,第二列是IP地址,统计出有多少个不同的IP
3. 实现两个线程交叉打印你好
4. http状态码
5. 开放题:如果一架飞机上面有100个人,下飞机后需要对每个人进行核酸和体温检测,有什么好的办法缓解这种机场的滞留呢?
6. 飞机上下来100个旅客,最多可能一个人检测成阳性,你觉得最少用多少个试剂盒可以把这个可能是阳性的人找出来?
7. 飞机上下来100个旅客,有10个人是阳性,如何把这10个人找出来?
8. 你在大学期间做过最有成就感的事情是什么?
9. 职业规划
10. 反问环节
# 4.28晚九点多收到OfferCall
#字节跳动2020春招##字节跳动##测试开发工程师##实习##面经#