2017年12月,我被三星班加罗尔研究所聘为研究工程师。我们进行了2到4轮测试。
第一轮:
软件能力测试3-4小时。
除了stdio和stdlib之外,您不允许使用任何库。提交的数量限制为10个,代码必须通过所有20个测试用例才能被选中进行下一轮测试。
问题: 检查图是否为二部图。
三星测试中的重要主题(按重要性递减顺序):图表、回溯和动态编程
查看之前三星在线测试中的问题。这些问题通常会重复。
第二轮:
技术小组讨论30分钟。
被选中的学生被分成5人一组,由三星的一名高级成员领导。我们得到了一张解释问题陈述的纸。我们有5-10分钟的时间想出解决方案。之后,我们被要求逐一讨论我们的解决方案。
主题:机器学习
问题:从损坏的数据库中恢复数据
考虑一个学院的学生数据库。数据库中的各个字段包括卷号、姓名、性别、年龄和爱好(hobby1、hobby2、hobby3……hobbyN)。不,名字是字符串。性别是布尔值。年龄是个实数。爱好是布尔型的(无论你是否喜欢某项活动)。
数据库被病毒破坏,数据库中的某些条目被删除。您将看到哪些条目已损坏,哪些条目完好无损。姓名和卷号未损坏。如何将数据库重建回最佳近似值?
我回答了这个问题,在这一轮之后被聘为研究工程师。我没有参加任何进一步的采访。
第三轮:
我的朋友们至少又参加了两轮技术面试。
准备工作:
1.早点开始
2.学会在不使用库的情况下编写代码。学习在不使用stdio和stdlib以外的任何库的情况下实现堆栈、队列、树、图形等数据结构
3.在小组讨论中自信地说话,清晰地表达自己的想法。你的想法比你使用的行话重要得多
4.你会被要求批评你朋友的想法。恭敬地这样做
5.面试时,学习如何在一张纸上写下伪代码和实际代码,而不会弄糟。你不能在纸上打退格。第一次就做好
6.对于研究职位,关注机器学习/概率/线性代数和相关主题
感谢极客们对我的准备工作的帮助。
<3,
巴拉斯