字节跳动AI-Lab算法岗面经(已收到offer)

4月初投递简历,大概1周左右面试通知,1、2面连着各1小时,3天后HR电话说2天后3面,3面也是1小时,约1周后接到offer电话。

1面直接撕算法题

- 顺时针输出矩阵。
十分常规。我觉得主要在考察coding的熟练度吧,熟悉的人写起来会比较快,不熟悉时可能边界之类的bug会出一些,建议面试前先随便写写热热手。

- LCA(最近公共祖先)。
tarjan或者ST+RMQ都可以。由于tarjan写起来习惯点平时写得多所以我肯定是写这个的,当然另一种解法也提了一下没有写,两种算法分别是典型的离线和在线算法。

- 线段树的一些操作。
对于打过OI、ACM的应该也是没什么难度的,不明白的可以随便搜一下,这里篇幅有限不好写。我觉得lazy tag以及位移操作等会是加分项,因为即使上课讲过线段树通常也不会提这些,把这些应用进去通常是算法竞赛所需,不包含在线段树这种数据结构的思想里。

- 后面时间有多就扯了扯平衡树啊之类其他的数据结构算法,没有写题目。(手撕红黑树就刺激了)


2面项目、算法
- 主要讲了下项目,我们的课程体系中人工智能、机器学习相关的课非比较多(甚至大一就开始整HMM中文分词了),因此把课内项目讲完就花了不少时间。

- 一道开放算法题:模糊匹配(一个字串里有些地方可能是错的或者缺了,在原来的地方找到最有可能的位置)。
一开始惯性思维误以为机器学习岗嘛,要先分词然后一个一个去匹配之类的,并没有想到好方法,后来经面试官提醒先写了编辑距离问题(基础DP问题)后写得还算比较好(?大概)。

- 由上题引出了一些其他的东西,DP直接写了个时间空间都是O(n^2)的,面试官问我可以优化嘛。
思考良久说好像不能再快了(惯性思维一般搞算法都是往时间优化的),经提醒哦原来应该在空间上做文章,后来思考了一会儿发现可以优化到O(n)。


3项目、机器学习问题及其他一些交流
- 为什么本科毕业就直接来找工作做机器学习。
这个我在这里就不说了也不太方便说也算稍微有些隐私的东西吧(估计也是看到简历是本科所以leader直接面?)。

- 机器学习里觉得学得比较好的或者印象比较深是什么。
我说是SVM(其实我当时比较懵,也不知道说什么好就随便说了个SVM),然后大概写了写公式,然后说我可能学得早现在有点记不清了,至少大致的思想是说出来了。

- kaggle比赛(时序预测相关,也是课程项目)的细节之类的问了一些。
主要是feature的处理啊,LSTM的哪些门啊之类的,让我写式子没写出来。
问我比赛排名还算靠前怎么这些也没写出来,我说可能毕竟是比赛和最终成绩挂钩,可能太执着于把MSE等指标变好看而忽略了内在的一些东西,但我确实研究过只是现在记不清了。

- 问只要是机器学习方面的哪个部门都可以吗。
我说毕竟只是本科,好多方面研究都不太深,不过我觉得个人学习适应能力应该还不错,应该能融入不同团队。

- 看过哪些书可以讲讲吗。
我平时看的基本都只是工具书,要说印象深的话就是高中那时候开始啃的算法导论了(机械工业出版社的那本黑皮书),里面的算法之类的基本都有推过,不过书后面的基本都不怎么会了(那些真的挺难的,如果全都看懂并推一推的话我觉得对个人提升应该是很大的)。

- 问如果去北京总部愿意吗(我投的上海)。
我说最好不要,之前去微软夏令营时一段时间不是很习惯北方气候及环境等。


大致就是这些,想到了再补充,现在状态“面试已完成”1天没接到通知,不知道是不是凉了,有点害怕。
更新,状态”面试已完成“后第2天收到offer了。
更新,排版。
#字节跳动##校招##算法工程师##面经#
全部评论
没有hr面吗
1 回复 分享
发布于 2020-04-29 02:41
都问到部门意向了,说明还是想要你的呀
1 回复 分享
发布于 2020-04-27 21:15
我把研究生给你吧,能换我进去吗😢
点赞 回复 分享
发布于 2020-04-28 17:24
楼主本科吗。。我佛了 。我简历直接挂了
点赞 回复 分享
发布于 2020-04-28 10:57
已完成基本上比较稳了,不放心你可以过一两天问问hr
点赞 回复 分享
发布于 2020-04-28 09:47

相关推荐

1. 自我介绍2. 项目都是自己写的吗?3. 我看你用 koa2 写后端,为什么选择它,能讲讲吗?4. 那你提到 koa2 它是不提供中间件的,你是怎么解决的?5. 中间件的原理是什么?(洋葱模型)6. 你刚刚说碰到 next() 就进入下一个中间件,那 next 只能执行同步,如果是异步的话,你是怎么处理的?(async/await,但是我发现,有的中间件需要在异步中间件之前执行,所以我用 try/catch 来处理异步中间件的异常)7. JS 异步发展史,以及它们的优缺点说一下 (回调函数--Promise--Generator--async/await)8. 你刚刚说 Promise 状态不能更改,那如果我要设计一个能修改 Promise 状态的函数,你会怎么设计?9. CSS 水平垂直居中的方法(flex、grid、绝对定位 + margin:auto、绝对定位 + 负 margin、绝对定位 + transform、table-cell)10. 你刚刚说到 flex 布局,那 flex:1 是什么意思?(flex: flex-grow  flex-shrink  flex-basis;等价 flex:1 1 0%表示元素可以均分剩余空间,可拉伸、可压缩,不依赖内容宽度,自动自适应填充布局。)11. 父容器宽是 500px,然后它左右各有两个子容器是 100px,如果设置 flex: 1,那它的宽度是多少?(500-100-100=300px)12. 说说你对浏览器缓存的理解(强缓存、协商缓存)13. 如果一个用户,他怎么去刷新都无法刷到最新版的代码,你能说下可能的原因吗?(版本号、hash等)还有吗?(我说我不知道了,面试官说还有 CDN 没有同步,我说企业才会这么干,自己写项目一般不会,我知道 cdn 是用来解决高并发的手段)14. React你熟吗?说下 React 函数组件和类组件的区别15. 怎么避免 Hooks 导致组件重新渲染?(使用 useCallback、useMemo、React.memo、useRef等等)16. 谈一下我对 React 的状态管理的理解(Redux、Mobx、Zustand,我说 Zustand 用的最多)17. React 常见的 hooks 有哪些?(useState、useEffect、useRef、useCallback、useMemo、useReducer、useContext、useImperativeHandle、useLayoutEffect、useDebugValue)18. TS 你熟吗?我们引进 TS 的目的是为什么?19. interface 和 type 的区别20. 说下 TS 里的泛型21. 我现在有十个字段,比如十个字段就要 A B C D E F G 这种。那我现在另有另外一个方法,这个方法接受的参数呢,必须是这个 interface A 里面的这个 K。就比如说你可以是 A B C 可以 A B C D 任何组合都可以,但是必须是这个 interface 里面的 A 里面的定义的。这个 K 这种类型的话是怎么去定义呢?(说实话我有点不太理解啥意思,反正我说了 keyof)``` TypeScriptinterface Obj {A: stringB: stringC: stringD: stringE: string// 其他字段...}```22. vite 用过吗?说说和 webpack 的区别。vite 的优缺点是什么23. 说说 Tree shaking(树摇) 和 Code Splitting (代码分割)的区别24. Git 你熟吗?说说 git merge 和 git rebase 的区别,什么时候用 git merge,什么时候用 git rebase?25. web3 你熟吗?(不太熟,听说过而已)26. 我看你自我介绍说了 AI,你是怎么用的?27. 除了提示词,还有什么能让 AI 更聪明?28. AI 的优缺点你说一下29. AI 发展这么快,你觉得我们以后会扮演什么角色?30. 反问基本都答上来了。面了我80分钟,我还以为稳过的
查看29道真题和解析
点赞 评论 收藏
分享
评论
8
53
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务