p******e 发帖数: 528 | 1 1。写程序时应该先保证运行结果正确,还是应该先保证算法高效?
比方说我用数组a实现一个队列,我可以让队列的头在a[0],然后用index
去访问各个元素。但是当我要删除队列的头一个元素的时候,我如果还想
把a[0]当成队列的第一个元素,我就得把整个队列向左挪一下。这样程序
写起来稍微容易一点,因为我总可以假设a[0]是头一个元素。但是这样写
效率就会比较差,因为在删除头一个元素后,我得挪动整个队列。还有一个
办法就是用一个变量front来单独标记队列的开始,而且当队列已经用到
最后一个元素的时候,我可以继续用front以前的位置来存放新进来的元素。
这样效率会好,但是要是一不小心,可能在访问元素的时候写错。
比方说是多个1或者少个1。请问在这种情况下应该是首先保证程序正确,
还是应该保证效率高?或者换句话说,但我先写出了一个正确但效率
不是最好的程序后,面试官会直接认为我只会最没有效率的写法,而
直接把我默拒了呢?
2。我看版面上有人写有的公司面试的时候让写程序,但是不允许测试和
编译。换句话说就是看程序能不能一遍通过。那这种时候要是有个小错,
比方说一个变量名是AAAA,结果后边写的时候不小心写成了AAA的话,
那岂不要fail掉了。 |
c*******0 发帖数: 162 | 2 1.正确是第一位的,是否高效可以根据面试官的follow up quesiton再优化。
2.Bug free正是很多公司考察的一个方面。能把程序一次写对确实不容易,如果问题简
单,面试官当然期望看到你一次写对,如果问题复杂,corner case很多,那他也应该
不会太为难你。 |
p******e 发帖数: 528 | 3 多谢你的回答。主要是以前写程序有个边写边调的毛病,所以有时候即使知道写的
可能有点问题,也是等调试的时候一下一下试出毛病后再改。看来这个对于面试
来讲不是个好习惯。
【在 c*******0 的大作中提到】 : 1.正确是第一位的,是否高效可以根据面试官的follow up quesiton再优化。 : 2.Bug free正是很多公司考察的一个方面。能把程序一次写对确实不容易,如果问题简 : 单,面试官当然期望看到你一次写对,如果问题复杂,corner case很多,那他也应该 : 不会太为难你。
|
m**e 发帖数: 150 | 4 aaa 写成 aa不算bug,尤其是变量名很长的时候,写错一个字母没有人会在意。
如果需要经常从头删除,从一开始就要避免用数组,或者在数组尾部操作,否则你写的
bug free也fail了。
:1。写程序时应该先保证运行结果正确,还是应该先保证算法高效?
:比方说我用数组a实现一个队列,我可以让队列的头在a[0],然后用index |
c*******0 发帖数: 162 | 5 别客气,没错。真不是个好习惯,就算平时工作,边写边调试也不是好习惯。另外,
mage说把aaa写成aa不算bug, 因为面试官可能也看不出来。我不这么认为,有些公司是
在线系统,需要你运行程序。显然写错一个变量名肯定是通不过的。
【在 p******e 的大作中提到】 : 多谢你的回答。主要是以前写程序有个边写边调的毛病,所以有时候即使知道写的 : 可能有点问题,也是等调试的时候一下一下试出毛病后再改。看来这个对于面试 : 来讲不是个好习惯。
|
d*********e 发帖数: 352 | |
k**l 发帖数: 2966 | 7 这年头俺工作中都用 Eclipse, 习惯了把变量名弄的挺长,Eclipse 既有 autofill,
而且有 typo 也能提醒
最近刷leetcode才发现变量名长了很容易打错,只好都上短变量
【在 c*******0 的大作中提到】 : 别客气,没错。真不是个好习惯,就算平时工作,边写边调试也不是好习惯。另外, : mage说把aaa写成aa不算bug, 因为面试官可能也看不出来。我不这么认为,有些公司是 : 在线系统,需要你运行程序。显然写错一个变量名肯定是通不过的。
|
p******e 发帖数: 528 | 8 这个其实就是我所担心的。如果这些在线的面试系统不能允许我测试我的程序,万一我
有个
像写错变量名这种低级错误,(我一般是用Emacs写程序,所以长得变量名都是自动补
全的。)
就只能寄希望于看code的人能够仔细的看我的程序。
【在 c*******0 的大作中提到】 : 别客气,没错。真不是个好习惯,就算平时工作,边写边调试也不是好习惯。另外, : mage说把aaa写成aa不算bug, 因为面试官可能也看不出来。我不这么认为,有些公司是 : 在线系统,需要你运行程序。显然写错一个变量名肯定是通不过的。
|
p******e 发帖数: 528 | 9 这个可能确实是个交流的问题。我不知道能不能一开始就告诉面试官说我知道我
的这个写法是低效率的,但是我想先把程序写对,然后再改进。但是就是不知道
能不能被接受了。
【在 m**e 的大作中提到】 : aaa 写成 aa不算bug,尤其是变量名很长的时候,写错一个字母没有人会在意。 : 如果需要经常从头删除,从一开始就要避免用数组,或者在数组尾部操作,否则你写的 : bug free也fail了。 : : :1。写程序时应该先保证运行结果正确,还是应该先保证算法高效? : :比方说我用数组a实现一个队列,我可以让队列的头在a[0],然后用index
|
C********e 发帖数: 492 | 10 你这个问题归根到底还是coding能力不足的问题。
你都想到更好的算法了实现起来还是会有bug,还是应该靠更多的coding来提高。
【在 p******e 的大作中提到】 : 这个可能确实是个交流的问题。我不知道能不能一开始就告诉面试官说我知道我 : 的这个写法是低效率的,但是我想先把程序写对,然后再改进。但是就是不知道 : 能不能被接受了。
|
n******n 发帖数: 12088 | 11 第一问,你的数据结构选择是错误的。只看结果正确有什么用?
【在 p******e 的大作中提到】 : 1。写程序时应该先保证运行结果正确,还是应该先保证算法高效? : 比方说我用数组a实现一个队列,我可以让队列的头在a[0],然后用index : 去访问各个元素。但是当我要删除队列的头一个元素的时候,我如果还想 : 把a[0]当成队列的第一个元素,我就得把整个队列向左挪一下。这样程序 : 写起来稍微容易一点,因为我总可以假设a[0]是头一个元素。但是这样写 : 效率就会比较差,因为在删除头一个元素后,我得挪动整个队列。还有一个 : 办法就是用一个变量front来单独标记队列的开始,而且当队列已经用到 : 最后一个元素的时候,我可以继续用front以前的位置来存放新进来的元素。 : 这样效率会好,但是要是一不小心,可能在访问元素的时候写错。 : 比方说是多个1或者少个1。请问在这种情况下应该是首先保证程序正确,
|
k**l 发帖数: 2966 | 12 犀利啊,感觉 lz 是不是外行裸刷题,对应的数据结构还是要懂比较好,否则弄出结果
来也过不了面试
【在 n******n 的大作中提到】 : 第一问,你的数据结构选择是错误的。只看结果正确有什么用?
|
p******e 发帖数: 528 | 13 请问你的意思是不是说要实现一个队列(queue),它背后的数据结构应该是链表,因为
链表很容易插入和删除第一个和最后一个元素。
(我用数组来举这个例子其实是因为我碰到的那个题目本身要求用数组来实现这queue,
所以我没有选择的余地。)
【在 n******n 的大作中提到】 : 第一问,你的数据结构选择是错误的。只看结果正确有什么用?
|
p******e 发帖数: 528 | 14 确实是如此,我还没有开始刷题,现在正在自己补数据结构和算法的知识。其实这个问题
也和另外一个问题有关,就是不同背景的人可能会对同一个问题有完全不同的认识。比
方说我
听说有人面试被问如何去求解一个f(x)=0 的一元方程。这个被问的人是数值计算的
背景,
他首先想到的就是类似于Newton-Raphson类似的迭代算法,结果后来有人告诉他面试官
想听的是二分法。其实就是把解f(x)=0作为一个类似于二分查找的变种来问的。所以
无论
哪个参加面试的人怎么改进他的迭代算法都没法通过面试。因为俩人谈不到一块去。。。
【在 k**l 的大作中提到】 : 犀利啊,感觉 lz 是不是外行裸刷题,对应的数据结构还是要懂比较好,否则弄出结果 : 来也过不了面试
|