楼主:
deo2000 (800IM)
2013-01-11 18:32:39今天去面试的时候,公司先拿了一张C语言考卷给我写,
先承认,我不是每题都会写,而且还不小心用到VB的语法 (% 用 Mod)
主管看了我写的那几题,问我:“你写的是C语言吗?”“是阿,请问有哪个语法错了吗?”
他先告诉我C没有 Mod,才发现自己用错 (我当助教教了整学期VB,有时候会在VB行末打";")
不过他说,他知道这是取余数
但是下面这行又让他更疑惑
(N Mod 2)&&(叙述式1,叙述式2); /*误用Mod前面已经解释过*/
我解释,如果N是奇数,就执行叙述式1,2,
叙述式1,2都是在做几何运算,几何运算的结果最后要return出去
“&&是在做逻辑判断啊,你怎么会拿来计算?”
“我没看过这种写法,你是第一个这样写的!”
然后我一直跟主管解释左右括号的运算顺位不同,IDE会最佳化可以不用if等等的
“你这是C++的语法吧!C complier不会过”
我又解释,我都把这样的东西写到8051里面,这一定是C的语法
已经不知道怎么解释了,当下真的很难堪
“这个逗号是什么? C有这样写的吗?”
我又说那是把两个不同叙述式隔开,不用换行,而且都会执行
以前去面试我为了Demo专题都会带NB,一定当场拿出来跑给主管看,
这次是骑自行车去,加上又是美商,
所以我只带专题报告和大学成绩单,结果根本连拿出来的机会都没有
“如果"&&"compiler会过,我再叫你来”
然后我灰头土脸的回来了
我想可能真的是自己的问题,所以回来第一件事情就是打开 keil 3 写了51测试程式
RI&&(('L'==SBUF)&&(P1=~P1,RI=0));
结果这行compiling竟然过,而且MCU能按照UART收到的指令执行
我想精明的外商主管绝对不可能弄错的,一定有坚强的程式实力和经验才能干到这个位子
这一定是:
1. 我的51都从实验室的垃圾堆里面捡来用的,可能被之前的学长烧坏了
2. 全华图书的光盘有问题,竟然给我盗版的keil
3. AMI临时人事冻结,主管不好意思直接叫我滚回家,让我演一场知难而退的戏
AMI 真是一家为人着想的好公司呢!
作者: ngu770502 2013-01-11 18:41:00
写Code 要写得让人看得懂,可维护性也很重要
作者: ngu770502 2013-01-11 18:42:00
除非是要调效能,不然用太刁钻或冷门的写法会被当垃圾= =
作者:
s8013011 (Sandra)
2013-01-11 19:19:00你没反问主管C的&&要怎写
作者:
apap (Ap)
2013-01-11 19:26:00主管回去发现真的会过 就再叫你来啦 不要太悲观了 囧
作者:
pinkowa (pinkowa)
2013-01-11 19:29:00你不应该回嘴的,有些只是看你的心态而已,就算真的会过,
作者:
pinkowa (pinkowa)
2013-01-11 19:30:00发现你真的有料,也会认定你难带...(主观强)
作者:
s8013011 (Sandra)
2013-01-11 19:34:00不去也罢 下一间
作者:
qmomo (肥毛)
2013-01-11 20:10:00团队合作是沟通 > coding, 总觉得你很酸
作者: garynetlier 2013-01-11 20:14:00
请问最佳化的说法是您自己判断还是改参数做过实验呢?
作者: silentence (小飞号:号:) 2013-01-11 20:14:00
原PO事后的吐槽也要酸 啧啧
作者: silentence (小飞号:号:) 2013-01-11 20:31:00
有人
作者: wsxokmty (黑色怪物) 2013-01-11 20:53:00
好特别的写法 RI&&..... 那边
作者:
stosto (树多)
2013-01-11 21:04:00很多人这样写吧....至少我研究所就看过不少
他只是一间假美商而已..薪水低到靠北 去那边干嘛...
作者:
jlhc (H)
2013-01-11 21:07:00楼上研究所这样写跟出去是两回事.....
作者:
WolfLord (呆呆小狼 N )
2013-01-11 21:11:00那我写的CODE那位先生一定发疯:P
楼主:
deo2000 (800IM)
2013-01-11 21:23:00楼上教的,我没看过short code,不过您介绍了我就有兴趣看
作者: Huskycat (好友都养猫ㄌXD) 2013-01-11 21:30:00
如果你有谈到钱的话应该就不会想去了吧
除了讨论语法 还有其他的吗? 止讨论这个摆明不想用你吧
作者: beggerchou (广三爱你哦~) 2013-01-11 21:43:00
效能最佳化怎么不写组语呢?
作者: leav (耶罗窖兽) 2013-01-11 21:54:00
C语言标准并没有保证&&左右的执行顺序,所以有潜在风险...
作者: leav (耶罗窖兽) 2013-01-11 22:00:00
而且业界有在要求coding style,这行应该会被lint tool抓出来
作者: DarkWanderer (舍己存道) 2013-01-11 22:02:00
不,C语言标准有保证顺序
作者: DarkWanderer (舍己存道) 2013-01-11 22:03:00
"&& operator guarantees left-to-right evaluation"
印象中AMI的考题都蛮基本的,可以用可读性较高的写法会比较好
作者:
stosto (树多)
2013-01-11 22:11:00编译技巧 在研究所与出去外面工作是一样的 观念正确就可以
作者:
stosto (树多)
2013-01-11 22:12:00写出这种语法,不过现在也很多人不会在意这种事情因为编译器实在做得太好
作者:
stosto (树多)
2013-01-11 22:13:00有很多人看不起研究所的程式码,殊不知现在业界一堆比研究所编译技巧与习惯还差的...
作者:
zhi5566 (协志 5566 最棒)
2013-01-11 22:18:00你可以跑没用 换个编辑器就挂了 像你这种标准写法 要找错
作者:
zhi5566 (协志 5566 最棒)
2013-01-11 22:22:00就是一行一行找 最佳化 2的倍数没人在用MOD.....
作者:
zhi5566 (协志 5566 最棒)
2013-01-11 22:25:00另外现在ARM粉强大 CODE写的清楚明白好维护才是重点
作者:
yoco315 (眠月)
2013-01-11 22:39:00没用你是正确的,写这种code的队友我会想打他
作者:
manlike ( )
2013-01-11 22:55:00高手都是用 && || , if else 都是越少越好~
作者: ohha0221 (蛋笨是的唸来过倒) 2013-01-11 23:05:00
你这写法 有bug的话 不容易看出问题在哪 因为通通塞在
作者: ohha0221 (蛋笨是的唸来过倒) 2013-01-11 23:06:00
同一行 一行里还包两个运算式 不容易trace
作者: ohha0221 (蛋笨是的唸来过倒) 2013-01-11 23:11:00
另外code写的短 不代表他执行的快 你要看编译出来的组语数量 跟 指令的速度 很多东西complier甚至都帮你最佳化
作者: ohha0221 (蛋笨是的唸来过倒) 2013-01-11 23:12:00
完了 不管你有没有用这些小技巧 编译出来的组语都会一样
作者:
cphe (魔鬼藏在垃圾筒里)
2013-01-11 23:25:00code写得难懂不代表技巧高明,可以多多trace别人写的code看多了,你大概就能分辨什么样的code才是高手写的
作者: ohha0221 (蛋笨是的唸来过倒) 2013-01-11 23:32:00
另外这么在乎速度 你的判断奇偶也可以改成 (N&1) 用mod
作者: eterbless (守护之翼) 2013-01-11 23:34:00
AMI一年到头都在征人..是都增不完?
作者: ohha0221 (蛋笨是的唸来过倒) 2013-01-11 23:39:00
这种含除法运算的 是快不了哪去的
作者:
b6byc (oopp)
2013-01-11 23:40:00这间挺奇怪的,时常征人.
作者:
a1e (我上了贼船了囧)
2013-01-11 23:48:00&& complier不会过才是见鬼了吧....
作者:
caca117 (caca)
2013-01-12 00:09:00你的写法是没有问题, 但是你有考虑过这份工作所写的code
作者:
caca117 (caca)
2013-01-12 00:10:00并不是只有你一个人用吗? 这样子的写法 可读性差!也不方便debug! 或许你更适合自己一个人独自完成的工作!
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:20:00其实,SHORT CODE是完全合法甚至才是真正原生的C语法,
作者:
caca117 (caca)
2013-01-12 00:20:00以下我是从网站中看来的 我觉得还不错 分享一下不要觉得写到别人看不懂才能证明自己的功力高深.写大家都看不懂的东西谁都会但是写到每个人都可以看得懂就真正是一门大学问了。
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:21:00楼上一堆指责SHORT CODE的人其实只能说根本不懂C,事实上系现在很多所谓的正统CODE都是为了写给人看才变成这个样
作者:
caca117 (caca)
2013-01-12 00:22:00楼上 你随便去找一份coding style都会叫你不要这样子写
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:22:00子的。而事实上,在撰写MCU或基层OS时,这些垄长式语法
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:23:00都无法产生最精简有效的OP CODE。ANTI这种程式码不如多去
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:24:00了解这些SHORT CODE为什么会产生,甚至为什么原生C是这
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:25:00个样子的。 不懂机器怎么运作是现代软件教育很大的盲点
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:26:00机器适用机器的方式运作的,而不是人类思维。强迫CPU用
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:27:00人类的思维运作的结果就是RAM永远不够大,CPU永远不够快
作者:
caca117 (caca)
2013-01-12 00:27:00如果你想用机器的思维来写code 你干脆写0101000010100
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:28:00当人能用Z80做NAS时,你得用ARM你的产品在起跑点就输人家了。 TERMWORK的基础是整个TERM水准要一致,既然水准一致
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:29:00说看不懂,或无法阅读,那就只剩借口了。
作者:
caca117 (caca)
2013-01-12 00:30:00所以说 你搞错这份工作写的code要给谁看除了你的team之外 OEM ODE 公司内部的人也都会看
作者:
caca117 (caca)
2013-01-12 00:31:00全部加起来大概上千人以上 你要全部的水准都一样?
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:31:00其实AMI的反应只能说AMI的BIOS是软件猪,无效能可言
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:32:00CACA:BIOS LEVEL的产品,要不就是作TOOL给客人,要不就
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:33:00是客人自己要有高阶工程师看得懂,你把CODE写得很肥没效率,只为了客人根本不会去看或喝咖啡加减看而去牺牲掉的
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:34:00BIOS应该有的效能,这样的产品算是好产品吗?
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:35:00要交给客人的应该是详细的说明文件,让客人看了能跟得上而不是为了三角猫客人去牺牲产品的品质。
作者:
comipa (綾崎若èœå®¶å¾¡ç”¨)
2013-01-12 00:36:00当全世界用你code的客人都很三脚猫的时候,那就要写到他懂了
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:37:00CAC:你可以问楼主,我的确会在C里面夹ASM,甚至直接夹
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:38:00OPCODE。
作者:
WolfLord (呆呆小狼 N )
2013-01-12 00:39:00COMIPA:只要你能提供够方便的TOOL人家不会想读你的CODE的
作者:
comipa (綾崎若èœå®¶å¾¡ç”¨)
2013-01-12 00:40:00那你问intel干嘛做reference code好了,为啥不给支tool了事
作者:
caca117 (caca)
2013-01-12 00:41:00最好BIOS就做到只要打几个勾勾 不需要去研究code就把project做好!
作者:
caca117 (caca)
2013-01-12 00:42:00如果你做得到的话 保证你可以干掉三家BIOS Vendor!
作者:
comipa (綾崎若èœå®¶å¾¡ç”¨)
2013-01-12 00:42:00大陆那间算进来有四家..XD
WolfLord 看你的推文 你应该是没看过EFI BIOS code
作者: chihtapien (我无言了......) 2013-01-12 01:24:00
这不是在写考卷吗 又没规定要怎么写 怎么扯这么远
作者:
yoco315 (眠月)
2013-01-12 02:14:00TERM WORK 害我笑出来...
作者:
askacis (ASKA)
2013-01-12 02:25:00原PO有查过这样的写法翻成ASM的时候比一般写法省几条指令?
作者:
WolfLord (呆呆小狼 N )
2013-01-12 02:30:00pega5566:看过又如何?没看过又如何?重点是滥用资源的
作者:
WolfLord (呆呆小狼 N )
2013-01-12 02:31:00产品竞争力会如何吧?
作者:
WolfLord (呆呆小狼 N )
2013-01-12 02:32:00askacis:好的程式不只要CODE最小,还要最快又最稳
作者:
patoo (完了完了 要变砲灰了 )
2013-01-12 02:32:00这种CODE累的是接手的人...
作者:
askacis (ASKA)
2013-01-12 02:36:00我刚用gcc试了一下,两种写法翻出来的ASM是一样的
作者:
askacis (ASKA)
2013-01-12 02:37:00这样牺牲可读性的写法真的有比较好? 我也写过MCU,也知道
作者:
patoo (完了完了 要变砲灰了 )
2013-01-12 02:38:00bios我不知道 不过firmware我从来没看过这种coding style
作者:
askacis (ASKA)
2013-01-12 02:38:00一些最佳化性能的写法,可是太不一般的code style很难维护
作者:
patoo (完了完了 要变砲灰了 )
2013-01-12 02:40:00有时候CODE是你一个人写的 以后要读的可不只你一个啊...
作者:
cobrasgo (人鱼线变成鲔鱼线,超帅)
2013-01-12 02:45:00我比较想知道这种写法是从哪学来的?
作者:
askacis (ASKA)
2013-01-12 03:09:00另外原PO不觉得除了用%之外还有更好的方法吗:)?
作者:
javatea (齁齁)
2013-01-12 04:50:00阿是多厉害? 面试完还在这边酸主管 要酸就明著酸 拐弯抹角
作者:
caca117 (caca)
2013-01-12 05:50:00一个不懂BIOS的人 和他朋友在这边大放厥词 效能差
作者:
caca117 (caca)
2013-01-12 05:52:00干脆说BIOS是卖贴纸的! 客户都不会去看code改code
作者:
caca117 (caca)
2013-01-12 05:55:00难道从Legacy(ASM)转换成UEFI(C)开发是错的 大家都去吃屎你和你朋友最厉害了~ 可以抱着这样子的心态继续去找工作吧
作者:
caca117 (caca)
2013-01-12 06:06:00对BIOS有兴趣的人可以去网络上搜寻EDK2 有整套source code
作者:
kikichou (下个月爆忙)
2013-01-12 09:22:00烂, 你这种人那位主管不要你是对的,你根本搞不请重点在那
作者:
kikichou (下个月爆忙)
2013-01-12 09:23:00你以为团队只要你一个人吗? 看你整个行为就是心高气傲
作者:
kikichou (下个月爆忙)
2013-01-12 09:24:00下一位
作者: Dexterity (Cogito ergo sum) 2013-01-12 10:28:00
你这样子不只造成自己工作团队的困扰
作者: Dexterity (Cogito ergo sum) 2013-01-12 10:29:00
也对其他OEM厂的工程师造成困扰呀
作者: satonoo (Moskos) 2013-01-12 11:54:00
面试被电就上来讨拍 我看你还是继续当学生就好
作者: Minilogo 2013-01-12 14:17:00
这是&&的short circuit吧,有看过这种写法
作者: atobela (尼玛蛋蛋面) 2013-01-12 14:33:00
这篇文好酸...
这写法真的难维护,而且现在cpu的速度,这样写真的没意义
作者:
xvid (DivX)
2013-01-13 04:09:00AMI应该很高兴不用维护你的code和作你的同事
作者:
snaketsai (ã•ã„ã§ã‚“ã—)
2013-01-13 04:55:00请相信你的compiler
作者:
snaketsai (ã•ã„ã§ã‚“ã—)
2013-01-13 05:10:00short code没有不好,只是这场合又必为了这事情起冲突?
作者:
OnlyRD (里巷人)
2013-01-13 14:33:00在现代的compiler下这样写没有意义,编译出来是一样的.
作者:
OnlyRD (里巷人)
2013-01-13 14:55:00用comma expressions也不是好习惯,很容易埋bug,也没比较快
作者:
ccd1006 (吸血鬼)
2013-01-13 22:07:00AMI应该很高兴不用维护你的code和作你的同事
作者:
sym30 (看熱鬧...)
2013-01-14 02:22:00是很厉害没错, 不过OEM的工程师可能会干谯在心里.
作者:
sym30 (看熱鬧...)
2013-01-14 02:24:00你忽略了这份工作的立场了, 你写得code是要给人看的.
作者:
sym30 (看熱鬧...)
2013-01-14 02:25:00不是自己在实验室里面追求效能用的.
作者:
sym30 (看熱鬧...)
2013-01-14 02:26:00追求效能与code的精简以外, 也要考虑到客户的能力与可读性.
作者: juiljji (木头) 2013-01-14 11:20:00
不是请你来作最佳化运算的,而且你写的有快吗?每种CPU指集也不一样,你有比较行喔?
作者:
ChampionYe (A Sunny Boy!! haha)
2013-01-14 14:30:00自以为写得短就是好程式吗...你离开公司后要叫谁来维护
作者:
ChampionYe (A Sunny Boy!! haha)
2013-01-14 14:31:00人家不care效能的地方硬是要用难懂的code来加强效能 反
作者:
ChampionYe (A Sunny Boy!! haha)
2013-01-14 14:32:00而造成维护的成本增加 公司干嘛这样自作孽
作者: stanley3298 2013-01-14 16:06:00
重点已经不是程式正不正确的问题了
作者: stanley3298 2013-01-14 16:07:00
你要思考浓缩原始码有无意义 以及如何推销自己
作者:
kirchize (起落是无常)
2013-01-14 16:31:00朝圣推
作者:
ppit (无所谓极限只有划地自限)
2013-01-14 17:08:00来朝圣!
作者: pengpluto (暱称) 2013-01-14 21:20:00
朝圣XD
作者:
wonwonlaw (汪汪æ¼)
2013-01-14 21:55:00朝圣!
作者:
abcdeffg (ä½ å¿«æ¨‚æˆ‘ä¹Ÿå¿«æ¨‚)
2013-01-14 23:03:00来朝圣 台湾主管容不下大佛的 您还是自己创业吧
作者: Axcic (GLASS SKIN) 2013-01-15 00:01:00
不会写code的应该是你没错
作者:
snaketsai (ã•ã„ã§ã‚“ã—)
2013-01-15 03:13:00其实稍微看了一下您以前作过得论文跟研究,您真的很强了
作者:
snaketsai (ã•ã„ã§ã‚“ã—)
2013-01-15 03:16:00但是就像Goodliffe跟Joel的强调,readbility重要太多了
作者: kkoala (Shong) 2013-01-15 21:57:00
compiler 是有在做事情的 :)_
这篇的重点是主管认为他写的程式的错的 又不是批评可读
性的问题 一堆人因为看不惯这篇的酸 而把矛头指向作者