-
1. 面试流程
- 不要只在计算机上写代码,现场可能会手撕,所以要多在纸笔上练习(这个临近找工作再说吧)
- 面试解题时,可以边思考边说出思路,而不是一直闷头解。
- 写代码时不必太急促,在时间范围内尽量严谨、完整地给出解决办法。在提交前要多做测试,测试边界条件等。遇到bug时要考虑完整,找到原因再解决,而不是多次试错,会显得很不专业。
-
5. 行为面试题
-
这个部分可能用于更加深入你的简历,了解个性,缓和气氛等。
-
对于项目部分的行为题,面试前列个表格,总结以下各个项目中的问题,电话面试时可以放在手边。
常见问题 项目1 项目2 项目3 最难的部分 ··· 有什么收获 ··· 最有趣的部分 ··· 遇到的bug ··· 最享受的过程 ··· 与团队的合作和冲突 ··· -
你有哪些缺点: 思考一些真实、符合逻辑的缺点,并且讲讲如何认识并克服。
-
想问面试人员什么问题:
- 对面试人员提问:
- “每天花多少时间在写代码上?”
- “每周开多少会?”
- “团队中,测试、开发、项目经理比例多少?如何互动?如何运作?”
- 对于公司调研,对于技术方面的提问:
- “我注意到你们采用了X技术,这是如何解决Y问题的?”
- “我注意到你们采用了X协议/技术,为什么不是Y协议/技术。X有a、b、c好处,但也有d、e、f缺点。”
- 对于技术的热忱:
- “我对xxx方面比较感兴趣,公司或者你做过这些方面吗?有什么学习途径?”
- 对面试人员提问:
-
其他问题,重点也就在于一个人的情商吧~别回答的太蠢就好…
-
-
6. 技术面试题
-
五步法:
- 向面试官提问:消除疑义,把题目不确定的部分都搞清楚。
- 设计一种算法:构造思路。注意以下几个问题:
- 算法时间及空间复杂度;
- 大量数据怎么办?
- 设计会引发其他问题吗?
- 如果有其他问题或者限制,你要做出怎么样的取舍?
- 面试题中的特定数据或条件(排序等),要如何运用?
- 如果一时想不到最好的方法,先给出暴力解法再进一步优化也可以。
- 编写伪代码,是为了让写代码时更有逻辑,但要跟面试官解释一下之后还会写实际代码。
- 编写正式代码,要注意有条不紊,跟者思路。多用数据结构表现出良好的OOP;纸上写代码不要太凌乱。
- 测试:
- 极端值:0、负数、空值NULL、最大最小值等;
- 用户错误输入;
- 正确输入一般用例;
-
题目解法
- 这个做得多了肯定熟练的多,不过也有一定的技巧,一定的方法:
- 举例法,多举例找规律,跟书中提到的简单构造法也差不了太多。
- 简化推广法,先将问题简化,然后再晋升到复杂,从中找到解决办法。
- 模式匹配法,将问题与类似的问题相比较,类似问题的解决方法可能能够帮到你。
-
好的代码
- 正确、高效、整洁:这些都好理解,就是字面意思。
- 易读:必要的注释,以及良好的逻辑,花里胡哨的位操作不一定好。
- 可维护性:能应对需求变化而更改。
-
写出好的代码的要点:
- 多用数据结构,让代码条理性、逻辑性更加清晰,并且必要时体现出面对对象的思想。
- 适当重用代码,写出通用性高的代码。
- 模块化,让代码的可读性、可测试性、可维护性更强。
- 灵活、健壮,编写灵活、通用的代码,在解决问题的同时想到问题的拓展,可以用模板/泛型来解决问题,或者不把关键参数写死等。但如果需要让解决方案更加复杂,那么还是最好按照题目要求来吧!
- 错误检查:这个不要说的太多,要针对各种情况都编写解决方案。
-