参考资料:
Facebook面试官带你一个月搞定算法面试(一个月怎么可能啊,膜拜大佬啊)
正文:
1.找到2-3个优秀的人(或培训)就够了,不需要去寻找一揽子的解决方案,2-3个即可,接下来就是沟通和做了。精力需要聚焦。
2.算法和语言一点关系都没有,学的是算法的核心思想
3.为什么要参加培训:
(1)不懂的时候及时沟通的重要性!这是参加的意义,解决问题,并不丢脸。我不敢沟通,丢脸啊.丢个毛线,技术不提升,找不到工作才丢脸.(辅助)
(2)所有东西都准备好了,学就好了!(方向)
人家提供的不只是视频,人家是要做培训中的“海底捞”
4.面试考察的目标:
基本编程+逻辑思考能力。用代码跟我说话,talk is cheap,show me the code!
- 逻辑思考能力:是否能很快想到一个work solution,是否能够在面试官点出问题后优化自己的代码
- 代码质量:代码到底写完没有(代码写完再写注释啊),代码风格(a.可读性、b.变量名、函数名命名c.空格和空行的使用),异常检测、bug free
- 沟通能力:把面试官当做一起工作的人,让面试官愿意和你一起工作
(1)做一个题之前,先和面试官沟通清楚,得到面试官的肯定,再开始写代码,写完再解释,不能闷头就写,容易跑偏,包括时间复杂度要求等,不能用递归等,要问他,也不要一边写,一边解释,这样会写不完
(2)先好好思考,不行再问提示,别一上来就问提示,要主动思考,你可以问这个思路对不对,别直接问怎么弄
5.面试考算法(共同语言啊),工作设计和调API(也并不简单)
6.刷到什么地步才能去面试?
你永远没有觉得自己没有准备好的一天!
评估方法:目标公司(美团)
7.面试算法!=算法
-
带人名的都不考,比如匈牙利算法
带人名的都不考 -
你写一个快速或者归并排序O(nlog(n))吧
算法面试知识点
题量300吧 - 刷中等题就够了(300题就够了)
- 其他小厂(二叉树、链表、字符串、数组基本数据结构相关的题掌握就行了)
8.基础算法+外层包装(国内的问题)
9.coding style
- 代码风格({} () 越初级越不把代码风格当回事,不要敷衍自己的代码,想哭)
- 可读性,比如你的1代表什么意思(可读性很重要,可以用枚举)
- 数组下标检测等(写太少,不熟)
- 耦合度高(不同的逻辑都在一块,难维护,易出错,难读懂,写成子函数吧,2个逻辑能分开就不要和在一起写,劝分不劝和)
- 重复代码(可以写成一个子函数)
- 避免全局变量和不用递归
- 使用含义清晰的变量名命名+简单易读的处理逻辑
- 子函数化,易读,易维护,不易错
- 越是高级别的程序员,越有代码洁癖
网友评论