字节跳动后端一面凉经
字节跳动-商业智能部门-后端
主要开发语言Go/Python
所以问了Go/Python的一两个问题,全部不会,然后问了下简历中的项目情况,实习中印象中比较深的业务经历
一面
数据库
一对一、一对多、多对多怎么考虑(分析微博、关注、评论、点赞)主要这里卡得比较久
innodb特点
数据库事务隔离级别
脏读、不可重复读、幻读
计算机网络
TCP怎么保证可靠传输(我答了拥塞控制、延迟ack)
滑动窗口
多线程下载为什么快,主要影响了哪个阶段,某个线程发送失败,重传会影响其他线程吗
————————————
3个网段
192.168.1.0/24
192.168.2.0/24
192.168.0.0/16
给个IP地址
192.168.1.5
它在哪个网段?
————————————
算法
给出一个ip地址,如何匹配最优的网段
192.168.1.5同时在192.168.1.0/24和192.168.0.0/16,它的最优解是192.168.1.0/24,因为它比192.168.0.0/16更具体。
主要是讲下思路。
一开始nc了,说用二维数组存储网段,然后遍历匹配(先遍历24的再遍历16的)
然后面试官提示可以优化到O(1),问我用什么数据结构,我就答hash,然后在他提示下写出部分代码和思路
大概是这样子:
Map<String, String> map = new HashMap<>(3);
// 数据处理一下,如果是24结尾就put前3组,16结尾put前2组),大概是下面这样子
map.put(“192.168.1”, “192.168.1.0/24”);
map.put(“192.168.2”, “192.168.2.0/24”);
map.put(“192.168”, “192.168.0.0/16”);
// ip地址处理下,先保留3组查看是否存在,再保留2组查看是否存在,
// 192.168.1.5
String ip = “192.168.1.5”
If(map.get(“192.168.1”)!=null){
//找到了输出结果
}
else if(map.get(“192.168”)!=null){
//找到了输出结果
}
else{
//没找到匹配的
}
总结