字节跳动数据挖掘笔试
记录字节跳动数据挖掘第三场笔试题
题型:单选7道,不定项3道,编程3道(单选涉及Linux, SQL)
1. 怎么解决数据倾斜
① 增加reduce的个数,② 重新设计key,有一种方案是在map阶段时给key加上一个随机数,有了随机数的key就不会被大量的分配到同一节点,待到reduce后再把随机数去掉即可。③ 使用combinner合并,combinner是在map阶段,reduce之前的一个中间阶段,在这个阶段可以选择性的把大量的相同key数据先进行一个合并,可以看做是local reduce,然后再交给reduce来处理,这样做的好处很多,即减轻了map端向reduce端发送的数据量(减轻了网络带宽),也减轻了map端和reduce端中间的shuffle阶段的数据拉取数量(本地化磁盘IO速率)。④ 增加jvm内存。
///这是一个多选题,我记得题上给的选项有①,②,③,但是我好像没选完。///
2.事务特征
①原子性,②一致性, ③ 隔离性,④ 持久性。
///这也是一个多选题,题上所给选项四个都有///
3. 系统产生死锁的必要条件
①互斥条件:一个资源每次只能被一个进程使用。②请求与保持调价:一个进程因请求资源而阻塞时,对已获得的资源保持不放。③不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。④循环等待条件:若干进程之间形成一种头尾相接的循环等待资源。
///同样是多选题,选项好像有①,③,④。不记得有没有②了。
4.TCP协议中,Client需断开连接时。。。。
///不记得选项了,然而也没有找到答案///
单选题中还有数学的计算题,(虽然我是数学生,但是还是费劲的算了一会儿),关于SQL的题是考INNER JOIN,OUTER JOIN,LEFT JOIN,LEFT OUTER JOIN。LEFT JOIN和LEFT OUTER JOIN没什么区别,看来当时应该选OUTER JOIN了,学了这么久SQL,这么简单的题还错了,也是服了自己了。
编程题一
题目:
小明设计了一个编辑器,内容S最开始是一个空字符串,只能通过特定的命令Q来修改编辑器内容,目前支持下面四个命令:
1 w : w字符串追加到S末尾
2 k : 删除S的最后k个字符
3 k : 输出S的第k个字符
4 回滚上一步对S的操作(1,2会修改S,回滚对1,2操作)
最后输出的应该是步骤3要求的第k个字符
命令行要求:
第一行输入总步骤的个数N
输入:
8
1 abc
3 3
2 3
1 xy
3 2
2 2
4
3 1
输出:
c
y
a
///目前没有找到答案,后面有答案了会补上///
编程题二
小C追小H,小H给了小C一篇文章和一本字典,这篇文章是无标点符号的,小H的要求是让小C把这篇文章根据字典来断句,就这么说吧,我也忘了题上怎么表述的)把这篇文章有多少种分段方法求出来。
命令行要求:
第一行输入文章,第二行输入字典中字的个数,后面一次输入字典内容。
输入:
abcba
5
ab
ba
bc
cb
a
输出:
2
说明:
文章可以断为:
a | bc | ba
ab | cb | a
///后续补答案///
编程题三
小H有n双纯色袜子,对标号为i的袜子定义颜色为C_i,接下来的m天,第i天会选择标号为a_i和b_i的两只袜子。问:怎么染色,才能最少染色。
(第三个题没有去细想,所以只记了个大概)
总结这次笔试,感觉大厂的题好难啊!!!!
自己还要多学习。
若有大佬自己写出来了编程题的代码,或者找到了,麻烦和小弟分享一下,感谢感谢了!!
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)