工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 2212|回复: 10

[其他] 吓人一跳的评分规则

[复制链接]
发表于 2008-11-28 00:32 | 显示全部楼层 |阅读模式
大家在做一些公司的笔试时,是否有时觉得编程题简直弱智?是否有时候考完试感觉良好,但是最后却发现自己没通过笔试?很多时候,我们做题并不懂对方的评分规则,结果笔试时吃大亏。说白了,不是我们不懂规则,而是大学本科的教育不健全(甚至本身教育思想有偏差),从而导致我们在工作中存在隐患。
) \) l$ R- _: D( f1 a& o现在就针对昨天的3G编程题讲解讲解。昨天笔完3G后,觉得自己分数超过60希望很大。但是现在看了相关评分规则后,觉得自己基本挂了。希望我以及其它有同等问题的人能总结教训,避免丧失更多好的求职机会。(当然,早就有良好编程风格的可以偷笑了)
3 @: p% [6 n. |( f9 N5 ?& v7 @& J8 R" i  E
(1)不调用C++/C的字符串库函数,请编写函数 strcpy) P4 z0 M0 ^) d% r) c% j
char *strcpy(char *strDest, const char *strSrc);3 Q8 Z' ^7 A% B

% M0 G. B# o* z* }很简单,是吧?再看看别人评分标准:
8 Y! O/ G$ t6 ]: W* ]char *strcpy(char *strDest, const char *strSrc);, s9 [7 G$ T! f
: S' w& R- @- w8 H
{' y4 Q* ~5 d2 O  ~

7 x! F+ C% r% p4 d4 o4 j    assert((strDest!=NULL) && (strSrc !=NULL));   // 2分7 x$ d0 B( U( h2 z4 ?3 P$ _

, `7 ]9 }1 P& Z  X    char *address = strDest;                     // 2分
7 U0 n( M  B- W4 u, z* w  {6 E7 J
    while( (*strDest++ = * strSrc++) != ‘\0’ )      // 2分
  C, U  [3 B5 p8 l. T6 P, M% o( Z7 s& G' I0 r8 D4 ]: r
       NULL ;
- T) M% C" a+ @; |+ t
' G+ m# h6 \( t* E5 @2 B5 ~    return address ;                            // 2分( \8 }5 ^  ?7 S8 j/ u: E
' S2 A8 @8 R. r* L1 }
}
, N7 y7 N6 O; s' \" u, j- K! K6 W: d9 }- H' K% |
不知有没有人跟我一样,发现自己基本一分不得?——因为,我们编程时没有良好的风格,写代码时没注意健壮性、可读性等规范,出错处理意识不强。结果写出的程序,BUG不断,理还乱。这种程序,算法似乎对了,但其实不能得分。' S( Q& p3 N  l. m1 ^; R$ `- E+ V
再看看其它一些评分规矩。大家会发现,原来即使算法对了,但是编程风格不良,也是不能被人接受(体现在笔试中就是不能得分)的!( T3 `3 y( E3 W6 K( i
一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)
  n) }, B! Q: M/ Y: T
- ~& y$ x, n* [1 D, z3 C; U& h+ F9 h8 {% I, z& |7 ]
, D/ T4 ^- B* b0 I; x! ~
请写出 BOOL  flag 与“零值”比较的 if 语句。(3分)) }$ ]$ i# H0 V; N8 W5 E# s

. L% X+ B! x; t/ C标准答案:
$ j0 R, g/ A3 Z
- B* j, y- `- c. y2 Y: ~    if ( flag )
2 k0 H5 d7 u8 b
9 _; X# K; _9 N    if ( !flag )) X2 }3 o6 \# f( M+ h' H/ \2 W* |
如下写法均属不良风格,不得分。
- y' D4 C: H5 O. f% G4 h/ E+ Y0 y5 t8 S" [% b
    if (flag == TRUE)   ; Z' z& E; @7 R# U+ ~; ^! a

+ K; w0 ]: {  {% W- p" X    if (flag == 1 )     ; w" r* i5 g  _' ^; x) n7 d& t( o

; @8 F) x* J+ t- O9 d    if (flag == FALSE)  ! O( C8 M2 A' Z

9 f: w/ y5 h0 z3 b( Q/ S        if (flag == 0)      
# ^! f' X4 X- r) I/ e2 Y
& `; g1 Z" s+ U请写出 float  x 与“零值”比较的 if 语句。(4分)- @! Y$ G/ x7 Q( W: q( q

: s: q. M9 c% L% _- i标准答案示例:
* n) C  I+ ]3 l7 Y# R
) `: }5 @$ t# t, D" V1 [% }; gconst float EPSINON = 0.00001;
' i! q8 O' X. k0 |6 }* n" l1 S: ~( }  \& Y$ R6 Y
if ((x >= - EPSINON) && (x <= EPSINON)
3 c. X( P/ A( `4 f; a, S" a9 _' ]
0 S4 O4 `% H6 ~% j不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。: B: D0 v- l. ~* r0 W

3 q7 C, h/ v' e   
  u; z& z3 c. ~0 T  ! r+ `5 D" {3 S5 {0 C7 i9 ~

& T( z1 J/ i' l  `$ N/ P5 a如下是错误的写法,不得分。0 k/ w$ c; {& ^1 f

4 A2 ]& {3 X/ e) E    if (x == 0.0)   
" F3 m" o6 S* O7 q( c
! |# A: O+ J6 ^( R8 {    if (x != 0.0)       7 Q* f9 e0 E) h4 t2 \+ i; r9 u# i2 u

9 u% w! {. g% y% n: O* O    7 _, q+ s4 v+ P$ ]5 v$ R
/ b) q# J$ Y4 j
请写出 char  *p 与“零值”比较的 if 语句。(3分)
6 X$ s2 S5 X# n6 s( Y
. P. K1 T/ S4 J  Y& u标准答案:2 W6 d: b3 |( G5 d) z1 N7 W/ y! E
3 T2 l2 F' ^, a
    if (p == NULL)
$ `& H+ X, T0 ^4 v4 G& b7 }$ w3 h! D! {# y
    if (p != NULL)
% t; E3 V7 z& C( s# X如下写法均属不良风格,不得分。
; n+ ^5 @8 O2 _! q0 W! Y/ H! o. _( G9 k$ l1 e, l6 o9 d4 Q4 L4 F
    if (p == 0)
. ?4 l5 Z5 R) a
' _1 V# @: A" }    if (p != 0)     2 a2 }! H" D- B. N4 U

5 ]9 }; d5 |; Q! D0 B2 |    if (p)  3 m" o5 E0 R5 R6 R3 T; @# J

9 G- v7 a) v$ b) K( `/ `        if (!)      
+ ?4 J. o, v7 h, G5 Y, r
8 ]! w! p- e1 |看到了吧?
发表于 2008-11-28 00:38 | 显示全部楼层
深有同感
回复

使用道具 举报

发表于 2008-11-28 01:47 | 显示全部楼层
strcpy几乎和答案一样的路过。。。
回复

使用道具 举报

发表于 2008-11-28 14:31 | 显示全部楼层
不懂编程的路过.
回复

使用道具 举报

发表于 2008-11-28 14:46 | 显示全部楼层
判断零值那部分本来就不能用==号,这不关风格不风格的问题,用==号的就是错误的。
回复

使用道具 举报

发表于 2008-11-28 19:29 | 显示全部楼层
晕死...摆明是语法错误...  并非编程风格问题.....
回复

使用道具 举报

发表于 2008-11-28 19:32 | 显示全部楼层
哈哈哈,楼主有意思哦
回复

使用道具 举报

发表于 2008-11-28 19:38 | 显示全部楼层
今天看了卷子,63分
回复

使用道具 举报

发表于 2008-11-29 10:33 | 显示全部楼层
编程的安全性问题..   你考虑得够不够细蜜!!!  就是这样, 否则写出来的程序,人家故意刁难你,那么你的东西就崩溃了
回复

使用道具 举报

头像被屏蔽
发表于 2008-11-30 19:43 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2008-11-30 21:34 | 显示全部楼层
点去睇试卷的??
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-5-15 12:22

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表