求职目标:NLP工程师

为什么想换工作?

毕业之后,除了技术相关书籍,我没读过太多其他类型的书,其中有一本内容短但是对我影响特别大的书——《谁动了我的奶酪》。出门问问是我毕业后的第一份工作,无论是工作内容还是团队氛围,我很满意在出门问问的工作,但是考虑到自己已经在出门问问工作了将近3年半,一直在从事人机对话NLU相关工作,我很难确定几年以后自己的能力和技术是否还有足够的竞争力?虽然继续在出门问问工作依然能够提升自己,但是我觉得如果换一个环境能够更大程度的提升自己,所以感觉是时候强迫自己去探索下一个“奶酪站”了。

面试情况:面试了平安寿险/爱奇艺/字节跳动/58/阿里小蜜/作业帮6家,拿到3个offer。

流水账:

  • 国庆节10月8日之后开始刷题&复习。

  • 10月25日进行第一次面试,面试了平安寿险和爱奇艺两家。上午面试平安寿险,平安寿险等了面试官40分钟,然后临时换了面试官,问了很多算法模型细节的问题,准备不充分,没通过。下午面试爱奇艺,聊了三轮技术面,让回去等通知,后来被告知这个岗位是9月份开放的,有候选人接受了offer,hc关闭了。

  • 10月29日去字节跳动面试,抱着积累经验的态度去的,两轮技术面,竟然通过了。

  • 11月03日再去字节跳动面试,进行第三轮技术面试,竟然通过了。11月03日上午还接到了一轮58电话面试,没提前预约,我还以为骚扰电话,囧。

  • 11月08日去58 AI Lab和作业帮进行面试,两家都通过了。后来作业帮和58等头条先出offer。

  • 11月18日收到字节跳动/58 AI Lab/作业帮三个口头offer。

  • 最终选择了字节跳动,11月19日出了书面offer。

  • (期间还接到2次阿里小蜜的电话面试,具体记不清哪天了。)

1. 编程题

感觉我自己刷题比较少,面试比较靠运气了。如果求稳,建议尽可能多刷,不要浪费面试机会。

leetcode刷了85道题:

主要是简单和中等级别的题目:

强烈推荐题库集合

详细的题目列表:

  1. https://leetcode-cn.com/problems/add-two-numbers 两数相加
  2. https://leetcode-cn.com/problems/median-of-two-sorted-arrays 寻找两个有序数组的中位数
  3. https://leetcode-cn.com/problems/longest-palindromic-substring 最长回文子串
  4. https://leetcode-cn.com/problems/reverse-integer 整数反转
  5. https://leetcode-cn.com/problems/palindrome-number 回文数
  6. https://leetcode-cn.com/problems/container-with-most-water 盛最多水的容器
  7. https://leetcode-cn.com/problems/longest-common-prefix 最长公共前缀
  8. https://leetcode-cn.com/problems/3sum 三数之和
  9. https://leetcode-cn.com/problems/3sum-closest 最接近的三数之和
  10. https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list 删除链表的倒数第N个节点
  11. https://leetcode-cn.com/problems/valid-parentheses 有效的括号
  12. https://leetcode-cn.com/problems/merge-two-sorted-lists 合并两个有序链表
  13. https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array 删除排序数组中的重复项
  14. https://leetcode-cn.com/problems/implement-strstr 实现 strStr()
  15. https://leetcode-cn.com/problems/search-in-rotated-sorted-array 搜索旋转排序数组
  16. https://leetcode-cn.com/problems/permutations 全排列
  17. https://leetcode-cn.com/problems/powx-n Pow(x, n)
  18. https://leetcode-cn.com/problems/maximum-subarray 最大子序和
  19. https://leetcode-cn.com/problems/spiral-matrix 螺旋矩阵
  20. https://leetcode-cn.com/problems/merge-intervals 合并区间
  21. https://leetcode-cn.com/problems/spiral-matrix-ii 螺旋矩阵 II
  22. https://leetcode-cn.com/problems/rotate-list 旋转链表
  23. https://leetcode-cn.com/problems/unique-paths 不同路径
  24. https://leetcode-cn.com/problems/climbing-stairs 爬楼梯
  25. https://leetcode-cn.com/problems/edit-distance 编辑距离
  26. https://leetcode-cn.com/problems/subsets 子集
  27. https://leetcode-cn.com/problems/merge-sorted-array 合并两个有序数组
  28. https://leetcode-cn.com/problems/gray-code 格雷编码
  29. https://leetcode-cn.com/problems/binary-tree-inorder-traversal 二叉树的中序遍历
  30. https://leetcode-cn.com/problems/maximum-depth-of-binary-tree 二叉树的最大深度
  31. https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree 将有序数组转换为二叉搜索树
  32. https://leetcode-cn.com/problems/pascals-triangle 杨辉三角
  33. https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock 买卖股票的最佳时机
  34. https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii 买卖股票的最佳时机 II
  35. https://leetcode-cn.com/problems/word-ladder-ii 单词接龙 II
  36. https://leetcode-cn.com/problems/single-number 只出现一次的数字
  37. https://leetcode-cn.com/problems/word-break 单词拆分
  38. https://leetcode-cn.com/problems/linked-list-cycle 环形链表
  39. https://leetcode-cn.com/problems/linked-list-cycle-ii 环形链表 II
  40. https://leetcode-cn.com/problems/binary-tree-postorder-traversal 二叉树的后序遍历
  41. https://leetcode-cn.com/problems/sort-list 排序链表
  42. https://leetcode-cn.com/problems/maximum-product-subarray 乘积最大子序列
  43. https://leetcode-cn.com/problems/min-stack 最小栈
  44. https://leetcode-cn.com/problems/intersection-of-two-linked-lists 相交链表
  45. https://leetcode-cn.com/problems/majority-element 求众数
  46. https://leetcode-cn.com/problems/word-frequency 统计词频
  47. https://leetcode-cn.com/problems/valid-phone-numbers 有效电话号码
  48. https://leetcode-cn.com/problems/transpose-file 转置文件
  49. https://leetcode-cn.com/problems/tenth-line 第十行
  50. https://leetcode-cn.com/problems/number-of-islands 岛屿数量
  51. https://leetcode-cn.com/problems/reverse-linked-list 反转链表
  52. https://leetcode-cn.com/problems/implement-trie-prefix-tree 实现 Trie (前缀树)
  53. https://leetcode-cn.com/problems/contains-duplicate 存在重复元素
  54. https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst 二叉搜索树中第K小的元素
  55. https://leetcode-cn.com/problems/power-of-two 2的幂
  56. https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-search-tree 二叉搜索树的最近公共祖先
  57. https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree 二叉树的最近公共祖先
  58. https://leetcode-cn.com/problems/delete-node-in-a-linked-list 删除链表中的节点
  59. https://leetcode-cn.com/problems/product-of-array-except-self 除自身以外数组的乘积
  60. https://leetcode-cn.com/problems/nim-game Nim 游戏
  61. https://leetcode-cn.com/problems/additive-number 累加数
  62. https://leetcode-cn.com/problems/reverse-string 反转字符串
  63. https://leetcode-cn.com/problems/reverse-vowels-of-a-string 反转字符串中的元音字母
  64. https://leetcode-cn.com/problems/intersection-of-two-arrays 两个数组的交集
  65. https://leetcode-cn.com/problems/intersection-of-two-arrays-ii 两个数组的交集 II
  66. https://leetcode-cn.com/problems/kth-smallest-element-in-a-sorted-matrix 有序矩阵中第K小的元素
  67. https://leetcode-cn.com/problems/arithmetic-slices 等差数列划分
  68. https://leetcode-cn.com/problems/partition-equal-subset-sum 分割等和子集
  69. https://leetcode-cn.com/problems/repeated-substring-pattern 重复的子字符串
  70. https://leetcode-cn.com/problems/coin-change-2 零钱兑换 II
  71. https://leetcode-cn.com/problems/reverse-words-in-a-string-iii 反转字符串中的单词 III
  72. https://leetcode-cn.com/problems/merge-two-binary-trees 合并二叉树
  73. https://leetcode-cn.com/problems/maximum-product-of-three-numbers 三个数的最大乘积
  74. https://leetcode-cn.com/problems/palindromic-substrings 回文子串
  75. https://leetcode-cn.com/problems/n-ary-tree-preorder-traversal N叉树的前序遍历
  76. https://leetcode-cn.com/problems/n-ary-tree-postorder-traversal N叉树的后序遍历
  77. https://leetcode-cn.com/problems/goat-latin 山羊拉丁文
  78. https://leetcode-cn.com/problems/split-array-into-fibonacci-sequence 将数组拆分成斐波那契序列
  79. https://leetcode-cn.com/problems/fruit-into-baskets 水果成篮
  80. https://leetcode-cn.com/problems/smallest-range-i 最小差值 I
  81. https://leetcode-cn.com/problems/smallest-range-ii 最小差值 II
  82. https://leetcode-cn.com/problems/smallest-string-starting-from-leaf 从叶结点开始的最小字符串
  83. https://leetcode-cn.com/problems/available-captures-for-rook 车的可用捕获量
  84. https://leetcode-cn.com/problems/maximum-subarray-sum-with-one-deletion 删除一次得到子数组最大和
  85. https://leetcode-cn.com/problems/day-of-the-week 一周中的第几天

2. 面试记录

这次求职面试了平安寿险,爱奇艺,字节跳动 AI Lab,58 AI Lab,作业帮和阿里小蜜。

最后拿到了字节跳动AI Lab/58 AI Lab和作业帮三家的Offer。

最终选择了字节跳动AI Lab。

20191025 平安寿险面试(AI算法工程师,1轮)

  1. 1. CNN网络结构
  2. 2. dropout细节(https://blog.csdn.net/program_developer/article/details/80737724)
  3. - 训练时候dropout之后,需要进行rescalex = x/(1-p)
  4. - 或者测试的时候,权重W乘以p,即pW
  5. 3. 梯度消失原因?(https://blog.csdn.net/qq_25737169/article/details/78847691)
  6. 4. LSTM为什么能缓解梯度消失
  7. 5. 解决梯度消失的方法
  8. 6. 逻辑回归是线性?还是非线形?(https://www.zhihu.com/question/30726036)
  9. 7. cross entropy公式
  10. 8. 10*64的输入,mutil-head attention,大概多少参数量?【回答不好】
  11. 9. 项目相关
  12. 10. 详细介绍最大熵模型
  13. - https://blog.csdn.net/golden1314521/article/details/45576089)
  14. - http://crad.ict.ac.cn/CN/abstract/abstract774.shtml)

20191025 爱奇艺面试(NLP工程师,3轮)

  1. 共三轮,不是按难度递增,三轮难度差不多,第一轮问的更细致一些,应该是和面试官有关。
  2. 第一轮大概50分钟,第二轮大概35分钟,第三轮大概40分钟。
  3. 开始先自我介绍。
  4. 然后面试官问项目,结合项目考察模型和算法,聊项目偏多,大部分都在说怎么做的,感觉模型和算法考察的不是很多。
  5. 以下问题基本都是结合简历中的项目问的:
  6. 1. CRFHMM好在哪?为什么?
  7. HMM是一种有向概率图模型,有三个主要参数,AB和兀,有两个假设,观测独立性假设,齐次马尔可夫假设,这两个假设就限制了HMM无法根据全局信息去预测隐藏状态;
  8. CRF是一种无向概率图模型,属于判别式模型,通过定义特征函数,学习每个特征函数的权重,这些权重就是模型需要学习的参数。
  9. HMM可以看作是CRF的特殊情况,也可以理解为任意HMM都可以表示为CRF模型。比如转移概率矩阵中的Aij,可以看作是特征函数t-1时刻状态为it时刻状态为j的权重,发射概率矩阵中的Bkj,可以看作是特征函数t时刻状态为j且观测值为k的权重。
  10. 但是CRF能够定义更丰富的特征函数,比如存在多维特征的时候,可以很方便的将当前观测值的上下文以及属性值都引入到模型。如果是HMM的,可能需要层级HMM或者高阶HMM
  11. 2. 如何做分词?用HMM怎么做分词?
  12. 3. BERT fine-tuning是如何融入知识的?
  13. 4. 介绍AttentionTransformerBERT之间的关系,详细介绍Self-Attention部分;
  14. 5. 简单画出Bi-LSTM CRF的结构图,CRF在其中的作用是什么?
  15. 6. 在使用Bi-LSTM CRF的过程中都进行了哪些改进和优化?
  16. 7. 人机对话系统的整体流程是什么?
  17. 8.了解DM部分的作用吗?
  18. 9. NLU中的难点是什么,如何解决的?
  19. 10. BERTGPTElmo的区别?BERT的优点在哪?
  20. ELMo主要是用来做特征抽取,应用到下游任务的时候,模型参数不更新,架构上是利用两个双向LSTM,一个对输入句子进行正向编码,一个对输入句子进行反向编码,然后将两个编码连接在一起,作为下游任务的输入。
  21. GPT可以用来微调,应用到下游任务的时候,可以根据具体任务,更新模型参数,架构上是堆叠的单向Transformer,可以看作是Encoder-Decoder架构的Encoder部分,但是预训练的时候为了避免self-attention看到整句的信息,借鉴了DecoderMask方法,就是训练到时刻t的时候,将t+1以及之后的信息屏蔽掉,这也就是单向的原因。
  22. ELMo虽然是双向的,但是无法将上下文编码在同一个向量里,比如
  23. “这个小狗无法跳上台阶因为它太累了”或者“这个小狗无法跳上台阶因为它太高了”
  24. 正向编码无法得知“它”是谁,因为看不到后边的“累”或者“高”
  25. 反向编码无法得知“它”是谁,因为看不到前边的“小狗”或者“台阶”
  26. GPT中的Self-Attention本身是可以同时利用“它”前边和后边的信息,但是为了防止看到未来的信息,引入了Mask机制,所以其实看不到后边的信息。
  27. GPT采用的是普通的语言模型的策略,也就是根据历史信息预测当前信息。BERT为了解决GPT中看不到未来信息,只能利用一个方向的信息的问题,引入了Masked LM。类似完形填空,训练的时候,遮蔽一些词,然后让BERT预测这些词,目标函数就是使得预测的词尽可能正确。
  28. 强迫模型在编码当前时刻的时候不能太依赖于当前的词,而要考虑它的上下文,甚至更加上下文进行”纠错”。
  29. OpenAI GPT使用的是BooksCorpus语料,总的词数800M;而BERT还增加了wiki语料,其词数是2,500M。所以BERT训练数据的总词数是3,300M
  30. 11. BatchNormLayerNorm
  31. - https://zhuanlan.zhihu.com/p/68651018)

20191031 字节跳动面试(NLP工程师,3轮)

  1. 介绍CNN
  2. 介绍CRF
  3. 介绍HMM

20191102 58面试(NLP工程师,1轮)

  1. 电话面试
  2. 1. CNN参数量估计
  3. 2. Bi-LSTM参数量估计
  4. 3. 编程题:如何找到相交链表第一个交点
  5. 4. 编程题:如何层次遍历二叉树
  6. 5. 介绍BERT的预训练过程并尽可能展开
  7. 6. SVMLR哪个对异常点更敏感
  8. 7. TensorflowName ScopeVariable Scope
  9. 8. Tensorflow如何复制一个Tensor
  10. 9. Python多线程/多进程/GIL
  11. 10. Python生成器
  12. 11. Bi-LSTM CRF的损失函数是什么,包含哪些部分,每部分如何计算?

20191107 阿里小蜜(算法工程师,电话2轮)

  1. 1. 长度n的无序数组,从中找第k大的数;
  2. 2. 如何跟一个没有机器学习背景的人解释什么是CRF
  3. 隔了一周之后又接到了第二轮电话面试,问了些KBQA相关的问题,和我之前的工作经验不匹配。虽然全程聊的挺好,但是最终还是没过。这个岗位是P7,我还需要努力提升自己!

20191108 58面试(算法工程师,现场3轮)


  1. 1. 知不知道满二叉树和完全二叉树的概念,深度为n的完全二叉树,节点个数的范围是多少?
  2. 2. 层次遍历二叉树,奇数层从左向右遍历,偶数层从右向左遍历
  3. 3. 给定n个数,可以组成多少种二叉排序树
  4. 4. Bi-LSTM CRF中的CRF怎么计算概率,写公式
  5. 5. Bi-LSTM如何防止过拟合
  6. 6. Batch NormDropout
  7. 7. 正则化会怎样影响loss曲线?为什么?从公式角度解释下。

20191108 作业帮面试(NLP工程师,现场3轮)

  1. 一面是算法三连:
  2. 1. 给定一个矩阵和点A,从A点开始顺时针打印点A右下角的矩阵
  3. 2. 给定一个数组,找到这个数组中,最小和连续子数组,并找到起始位置和终止位置
  4. 3. 非递归中序遍历二叉树(这题离最优方案差一点点)
  5. 二面也是概率&思路题:
  6. 4. 有一批植物的数据,每株植物有n个维度数据,n个工作人员将这批数据录入系统时,第m个员工录入信息时不认真,录入个别数据时填写了错误的数据,填高了或者填低了,比例不高,约1/1000。设计一种方案,能够尽可能找出录入错误的数据。
  7. 5. 五枚硬币,1枚(正面花,反面字),2枚(正面花,反面花),2枚(正面字,反面字),现在随机挑一枚硬币放在桌上,正面是花,问:反面是花的概率?
  8. 三面是个大数据的题:
  9. 6. 100亿行的日志文件,一行一条Query1G内存,找到频率最高的1000Query
  10. 其他算法和模型:
  11. 7. LSTM一个Cell的结构图/公式
  12. 8. 介绍LSTM,为什么用双向LSTM
  13. 9. Bi-LSTM CRFCRF的作用是什么
  14. 10. 使用BERT的改进空间在哪?
  15. 11. BERTNLU,有哪些亮点的尝试?

2019年10~11月-NLP工程师求职记录的更多相关文章

  1. deepin grub2017年11月13日折腾记录

    http://blog.csdn.net/atbird0321/article/details/78158194 https://bbs.deepin.org/forum.php?mod=viewth ...

  2. Linux自用指令——2019年10月23日

    1.ls ls命令是列出目录内容(List Directory Contents)的意思.运行它就是列出文件夹里的内容,可能是文件也可能是文件夹. ls -a 列出目录所有文件,包含以.开始的隐藏文件 ...

  3. Visual Studio 2019 v16.10 和 v16.11 Preview 1 现已推出!

    Visual Studio 2019 v16.10有什么新功能? 我们很高兴地宣布Visual Studio 2019 v16.10 GA 和 v16.11 preview 1发布.此版本使我们的主题 ...

  4. .NET Conf 2022 – 11 月 8 日至 10 日

    .NET Conf 2022 下周就正式开启了,时间是美国时间的 11月8日至10日..NET Conf 2022是一个免费的,为期三天的, 虚拟开发人员活动提供多种实时会话,其中包括来自社区和 .N ...

  5. GTAC 2015将于11月10号和11号召开

    今年的GTAC注册已经结束,将会在11月10号和11号在Google马萨诸塞州剑桥办公室召开.大家可以关注https://developers.google.com/google-test-autom ...

  6. 2016年11月19日 星期六 --出埃及记 Exodus 20:10

    2016年11月19日 星期六 --出埃及记 Exodus 20:10 but the seventh day is a Sabbath to the LORD your God. On it you ...

  7. 2016年11月10日 星期四 --出埃及记 Exodus 20:1

    2016年11月10日 星期四 --出埃及记 Exodus 20:1 And God spoke all these words: 神吩咐这一切的话说,

  8. 【¥200代金券、iPad等您来拿】 阿里云9大产品免费公测#10月9日-11月6日#

    #10.09-11.06#200元代金券.iPad大奖, 9大产品评测活动! 亲爱的阿里云小伙伴们: 云产品的多样性(更多的云产品)也是让用户深度使用云计算的关键.今年阿里云产品线越来越丰富,小云搜罗 ...

  9. 北京Uber优步司机奖励政策(10月26日~11月1日)

    用户组:优步北京人民优步A组(适用于10月26日-11月1日) 滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/ ...

随机推荐

  1. 复盘一篇讲sklearn库学习文章(上)

    认识 sklearn 官网地址: https://scikit-learn.gor/stable/ 从2007年发布以来, scikit-learn已成为重要的Python机器学习库, 简称sklea ...

  2. golang读写文件

    1. 标准输入输出 os提供了标准输入输出文件: Stdin = NewFile(uintptr(syscall.Stdin), "/dev/stdin") Stdout = Ne ...

  3. thymeleaf模板、thymeleaf语法相关中文文档教程

    thymeleaf模板在SpringBoot中是默认的模范引擎技术,SpringBoot不推荐使用比较老旧的jsp.但如果您想使用jsp的话,当然也可以.我这里为您讲述thymeleaf模板的基本th ...

  4. Mariadb/MySQL生产环境的my.cnf配置示例

    Mariadb/MySQL生产环境的my.cnf配置示例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.针对MySQL主程序mysqld定义参数[mysqld]  1>. ...

  5. Python入门篇-数据结构树(tree)的遍历

    Python入门篇-数据结构树(tree)的遍历 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.遍历 迭代所有元素一遍. 二.树的遍历 对树中所有元素不重复地访问一遍,也称作扫 ...

  6. Linux之RHEL7root密码破解(三)

    Linux系列root密码破解第三种方式,利用修改boot分区里的开机启动顺序来修改密码,即我们进入BIOS,修改boot启动顺序为CD-ROM: 接下来按F10保存退出 选择Troubleshoot ...

  7. django项目中使用bootstrap插件的分页功能。

    官网下载bootstrap插件放到项目中的static文件中 路由 path('blog-fullwidth/', login.fullwidth,name='fullwidth'), 前端页面引入 ...

  8. SQLAlchemy的应用创建

    1.首先创建app文件夹 同django 创建app 一样 创建文件 在创建的views中写入两个蓝图函数为了操作数据库的增删改查 acc.py from flask import Blueprint ...

  9. 与你一起学习MS Project——高级篇:Project高级应用

    我们再来看Project的一些高级应用. 一.设置任务依赖性的几种方法 首先是设置任务依赖性的几种方法,这里介绍三种方法. 方法一:选中两个需要建立依赖型的任务.选中用 ctrl 鼠标左键 的方式即可 ...

  10. etcd增删改查

    ![image-20191209191301618](C:\Users\AneroKissinger\AppData\Roaming\Typora\typora-user-images\image-2 ...