很庆幸在近两年左右开始面试, 跟大佬交流让人如沐春风,同时也学到了很多道理。
- 我看到很多像你一样对工作有热情的人,但是没有深入研究的方向,导致工作一段时间之后失去核心竞争力,要早点确认自己的方向,深入研究
- 工作的前五年应该尽量拓宽自己的深度,五年之后再拓宽广度,有了深度之后,广度是更容易的事情。依托自己的项目拓宽深度即可,多多思考如何才能做的更好,如何将遇到的问题抽象成算法, 并不断尝试验证效果
- 短平快的方法有的时候可以迅速的解决项目的问题,但是很可能让我们失去思考和探究的能力
对于我的项目而言,其实还是有很多可以优化的地方,总的来说是一个带约束的优化问题,如何求解的过程。
【头条面试】
-
一面:项目情况。写题 完全二叉树的最右边节点, 面试官循循善诱,面试体验极其好。先给我介绍了完全二叉树(我表示分不清完全二叉树和满二叉树的区别了),引导我解题。
—“层次遍历”
—“时间复杂度会高一些,有没有更好的办法”
— “中序遍历…”
— …
— “时间复杂度是多少”
— “o(logn)”
— “中间需要判断深度的时间复杂度呢?”
— “我一直没搞明白求二叉树深度的时间”
— 面试官跟我讲了一遍哈哈哈,就是遍历了每个节点呀
— “哦 那就是o(nlogn) ”
— “那时间复杂度还不如o(n), 有没有可以利用的性质,比如求深度的时候”
— “左右两边,是不是总是左边>=右边, 这样是不是就不用做max(left, right)的判断了,直接用左边的就可以了”
— “那时间复杂度就降低为o(lognlogn)”
遂写出代码,一个好的面试官让人学到了太多! -
二面:比较关注了解的体系框架。了解广告的哪些体系, 最新进展有什么了解。
最近看了什么paper, 介绍paper里印象深刻的地方
coding:
– sql: student_id, course, score, 取出来平均分不及格的同学名称. where 和have的区别,可以直接用having写出来嘛?
– python-排序好的自然数的列表,判断是否存在出现次数大于总长度n/2的数。一开始提了o(n),最后提示有更快的方法o(logn). 定位n//2处的数字的开始位置s,验证s+n/2是不是等于n//2处的数。最后自己测了几个例子,搞定边界情况。
三面:主要问了项目情况和自己的主要工作内容,跟面试官询问他们的场景。出了个sql题:分析留存率与浏览时长的相关关系。