社招准备和面试题

作者分享了社招面试的准备工作,包括深入理解机器学习算法,如DIN、DIEN、DSIN,以及transformer、bert等深度学习模型。他还强调了关注时事,例如对gpt的理解。刷题方面,作者建议多刷题并理解解题思路,推荐了codetop和LeetCode等资源。面试常考知识点包括二分查找、动态规划等,同时讨论了各种模型的区别和应用场景。

这次就整理下这次社招都做了哪些准备以及自己面试过的题目。

首先就是专业知识的准备,看了很多常用的机器学习算法,并对其算法做了推导。看了深度学习推荐系统这本书里面的模型,对自己简历中涉及到的模型重点掌握,比如DIN、DIEN、DSIN,还有对比学习技术。重点掌握了自己认为比较重要的深度学习模型,transformer,bert,这些都是必须要掌握的,包括每个模型里面涉及的细节,比如transformer里面的注意力分数为啥要除以sqrt(d_k),为啥用的是LayerNormalization,不用BatchNormalization。这些通过看我知乎里面的专栏都能看到。整理来说,传统的常用的机器学习算法一定要知道,比如xgb,gbdt,lgb这些,还有类似于roc的定义和它的计算以及代码实现这些都是应该去掌握的;另外就是基于自己的简历,简历项目里面提到的技术都要熟悉。还有就是我觉得要关注时事,作为一个算法工程师要时刻关注新动态,比如我还被问到了gpt. 下面这个链接是自己面试过程中整理的知识点,很多感觉都用上了。

面试_futurewq的博客-优快云博客

然后就是刷题了,我刷题刷的很早了,差不多一年前就刷了,那个时候强度很低,每天可能就一道,周末就没刷了,等到临近找工作就疯狂刷题,一天可能刷几十道。自己感受下来,就是通常第一遍刷完能掌握的题是很少的,一定要多刷,但是每次刷的时候要带脑子,不能只注重数量,还有就是实在理解不了的解法我觉得可以先记住,次数多了真的就理解了。在这里推荐代码随想录,这个此次自己用的比较少。还推荐一个刷题网页codetop,这个里面大家都会贡献自己刷了哪些题,所以就能看到最高频考的是哪些题,这样就可以尽快针对性的练起来,CodeTop企业题库,我在这个上面把那些高频题刷了无数遍,每次需要面试大厂的时候,我可能都会去练一遍。另外还有自己看到的一个大佬整理的博客。链接是:算法刷题笔记_翻滚的小@强的博客-优快云博客,大概是自己面试前1个月把,发现的这位大佬,我就把高频整理(精华篇)全部刷了一遍,后面又断断续续刷过几次。题目一定要多刷,刷的多了,真的能提高不少,我这次遇到了很多之前自己刷到的,有些是原题,有些是稍微的变体,但也不难,印象最深刻的是遇到了一个hard的变体,就觉得绝。

我面试下来,考的比较多的有二分查找、回溯、滑动窗口、动态规划、排序、栈和队列相关的、字符串相关的、DFS也有(岛屿数量那个)。还考过判断图是否存在环,其实就是考察拓扑排序,所以类似得算法也要准备。

记录下自己在leetcode上面目前的总的刷题数量,当然有些是很早之前刷的。

最后,记录下自己还记得的面试题(原来的电脑坏了,保存的东西都没了):

1.transformer,rnn,lstm的时间复杂度,参数数量

2.对比学习的损失函数infoNCE和crossentropy有啥区别

3.deepfm和wide&deep的区别

4.xgb和gbdt的区别,xgb为啥是泰勒二阶导.

这个二阶导数的解答:一方面是精度更高,可以用别的损失函数,只要该损失函数可以二阶导,这个应该是我们都知道的;还有一方面,就是优化速度更快,就是类似于速度和加速度,二阶导类似于加速度,我不仅告诉了你优化的方向还告诉了你怎么更快

5.xgb和lgb的区别

6.逻辑回归损失函数的推导

7.说一下FM

8.说一下transformer的结构,bert是啥样的,gpt是啥样的,bert和gpt有啥不同

9.什么是对比学习,温度系数

10.当评价指标是准确率的时候,那你这个问题又考虑召回率的问题吗,这个是具体项目中问到的。

11.当正负样本比非常悬殊的时候,应该用auc还是f1-score。

这个题目真的很有意思,当非常悬殊的时候应该用f1-score。虽然auc是看正样本排在负样本前面的概率,可以适用于样本不均衡的场景,但非常悬殊时auc还是会很高,难以衡量真实的情况;但f1-score是平衡准确率和召回率,在样本不均衡场景也同样适用。这个问题大家又不同见解可以讨论,我觉得这个题很不错。

12.说一下word2vec

13.bagging和boosting的区别,以及Bagging为啥能减小方差,这个是有个计算公式的。

其他的想不起来了

 

为了帮助您准备京东招聘测试开发岗位的面试,以下是一些可能涉及的面试题相关知识点,涵盖技术面试、编程题以及测试开发相关的内容。 ### 技术面试问题 1. **自动化测试框架的设计与实现** - 请描述你设计过的一个自动化测试框架的结构,并解释各个模块的作用。 - 如何处理测试用例的依赖关系?[^1] 2. **测试用例设计方法** - 请举例说明你如何使用等价类划分、边界值分析等方法来设计测试用例。 - 在测试一个复杂的业务流程时,如何确保测试用例的覆盖率?[^2] 3. **性能测试与调优** - 请描述你在性能测试中使用过的工具,并说明你是如何分析性能瓶颈的。 - 如何通过日志分析监控工具来定位系统性能问题?[^3] 4. **缺陷管理与跟踪** - 请说明你在缺陷管理中的经验,包括缺陷的分类、优先级划分以及跟踪流程。 - 如何确保缺陷的及时修复回归测试的有效性? 5. **持续集成与持续交付** - 请描述你在持续集成/持续交付(CI/CD)流程中的实践经验。 - 如何通过自动化测试来支持快速迭代部署? 6. **测试环境管理** - 如何确保测试环境与生产环境的一致性? - 在测试过程中,如何处理测试环境的不稳定问题?[^3] ### 编程题 1. **字符串处理** ```python def reverse_string(s): return s[::-1] ``` - 请编写一个函数,将输入的字符串反转,并测试其边界情况。 2. **数组操作** ```python def find_duplicates(arr): seen = set() duplicates = set() for num in arr: if num in seen: duplicates.add(num) else: seen.add(num) return list(duplicates) ``` - 请编写一个函数,找出数组中的重复元素,并优化其时间复杂度。 3. **链表操作** ```python class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next def reverse_linked_list(head): prev = None current = head while current: next_node = current.next current.next = prev prev = current current = next_node return prev ``` - 请编写一个函数,将单链表反转,并测试其边界情况。 4. **二叉树遍历** ```python def inorder_traversal(root): result = [] stack = [] current = root while current or stack: while current: stack.append(current) current = current.left current = stack.pop() result.append(current.val) current = current.right return result ``` - 请编写一个函数,实现二叉树的中序遍历,并解释其时间复杂度。 ### 测试开发相关问题 1. **测试工具与框架** - 请描述你使用过的测试工具框架,并说明它们的优缺点。 - 如何根据项目需求选择合适的测试工具框架? 2. **测试脚本编写** - 请编写一个简单的测试脚本,验证某个功能的正确性。 - 如何确保测试脚本的可维护性可扩展性? 3. **测试数据管理** - 请描述你在测试数据管理中的实践经验。 - 如何生成管理测试数据以支持自动化测试? 4. **测试结果分析** - 请描述你是如何分析测试结果并生成测试报告的。 - 如何通过测试结果来优化测试用例测试流程? ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值