作者sorryla (Mr.东)
看板Soft_Job
标题Re: [请益] 面试如果考coding可以这样回答吗?
时间Sun May 5 04:02:20 2019
提一个白板面试很重要但常被忽略的东西:写Test case
由前面回文可以看出来有人看到题目就跃跃欲试想要把演算法实作出来给面试者对答案,
但是在实际动手写code之前应该要先想好有哪些问题要解决,还有可能会发生的意外,
这样写出来的code才会比较robust,也不需要一直涂涂改改而让面试者扣你分.
以这题为例子,首先要考虑的就是正负数的分布状况,所以有几个基本的 Test case:
1. [-3, -2, -1] 全负数
2. [1, 2, 3] 全正数
3. [-3, -1, 2, 4, 5] 正负数都有
然後就是物件或阵列的常见corner case:
4. [] 空阵列
5. NULL
6. [0] 一个元素的阵列
再来是integer的常见corner case:
7. [INT_MIN, INT_MAX]
列出test case除了能够让你的演算法设计更经得起考验,还能够跟面试者讨论如何处理
例外,表现出你具备与团队合作且提出不同解法的能力,例如测资6就可以问说有没有记
忆体限制(可否使用long或浮点数来处理),或是需不需要丢exception等等这种没有
标准答案的问题,然後根据面试者的spec修改你的API design。
虽然说有些corner case是跟程式语言本身有关,但是大方向不变,只要能够提出该语言
的一些限制并提出解决方案,基本上就能说服面试者你有足够的知识去解决问题。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 73.181.149.85
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1557000142.A.850.html
1F:推 joejoe321321: 推 05/05 04:11
2F:推 joey11121: 推~乍看之下很简单的题目往往需要更周全的顾虑 05/05 07:59
3F:推 kwht: 推 ~ 感谢! 05/05 08:40
4F:推 brianhsu: 推 05/05 08:42
5F:→ LinuxKernel: 不愧是海外工程师><学习了 05/05 09:32
6F:推 ClawRage: 这好像参加CPE的第一堂课 05/05 09:51
7F:推 Mod987: 推 05/05 10:03
8F:→ bben900911: 推~ 05/05 12:34
9F:推 bben900911: 补推.. 05/05 12:36
10F:推 viper9709: 推Test case 05/05 23:09
11F:推 BBSealion: 赞 05/06 15:52