找回密码
 加入后院

QQ登录

只需一步,快速开始

搜索
查看: 2668|回复: 10

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

[复制链接]
发表于 2008-11-28 00:32 | 显示全部楼层 |阅读模式
大家在做一些公司的笔试时,是否有时觉得编程题简直弱智?是否有时候考完试感觉良好,但是最后却发现自己没通过笔试?很多时候,我们做题并不懂对方的评分规则,结果笔试时吃大亏。说白了,不是我们不懂规则,而是大学本科的教育不健全(甚至本身教育思想有偏差),从而导致我们在工作中存在隐患。3 N- B# {) o7 ~$ e3 z
现在就针对昨天的3G编程题讲解讲解。昨天笔完3G后,觉得自己分数超过60希望很大。但是现在看了相关评分规则后,觉得自己基本挂了。希望我以及其它有同等问题的人能总结教训,避免丧失更多好的求职机会。(当然,早就有良好编程风格的可以偷笑了)
; o! f2 K( F6 i1 x) F- v
9 O0 y# x- ^" ~' {/ w: W: P(1)不调用C++/C的字符串库函数,请编写函数 strcpy
' S" `) e: n2 Z  R. uchar *strcpy(char *strDest, const char *strSrc);9 H; z8 S2 X' Y
; t/ u0 ?7 @# o& k. c
很简单,是吧?再看看别人评分标准:
# n( T+ j1 a- c4 {0 F: V; ~, {& tchar *strcpy(char *strDest, const char *strSrc);
. X1 G7 |. c: C1 U* |, S1 b# X6 g5 U4 t  `; Q/ f
{9 K& a  ~9 \0 P: S( R" B% Q
( b+ @2 o) b, @  N$ P9 C* h) k
    assert((strDest!=NULL) && (strSrc !=NULL));   // 2分4 Y) C- ^* ^# h2 Y* z

9 J3 b$ S& [! Q/ n+ }; E    char *address = strDest;                     // 2分
) {1 S" B* l& m: y! K5 e
8 }4 g  q# z3 m1 S2 q    while( (*strDest++ = * strSrc++) != ‘\0’ )      // 2分
& S/ V  I) X* ]. p6 A9 h7 D* D2 Y1 ~
1 Y! c. v. ~  S+ d0 z/ V# M5 U       NULL ;
. _2 |+ J2 @" g/ ]8 L
1 ^% I& N! ^0 y4 V3 k1 d6 t    return address ;                            // 2分6 d' ^, g# Q& _# W) U$ f
5 y0 b6 K- j' h
}
* y) j, S7 w' r7 t: D/ J, ~' t! p/ |; }  u. A; e7 f+ Q
不知有没有人跟我一样,发现自己基本一分不得?——因为,我们编程时没有良好的风格,写代码时没注意健壮性、可读性等规范,出错处理意识不强。结果写出的程序,BUG不断,理还乱。这种程序,算法似乎对了,但其实不能得分。% g# A3 y2 N3 g& k: `' `0 r; y7 F
再看看其它一些评分规矩。大家会发现,原来即使算法对了,但是编程风格不良,也是不能被人接受(体现在笔试中就是不能得分)的!
3 m5 I# |3 c9 H一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。(10分)7 N- G% M$ C, o' m

. I  a- c3 E! Z7 p  U$ E
+ g4 m) n$ Q9 Q( ~& |! X3 y: x3 h$ s5 x0 ?& o$ X% y
请写出 BOOL  flag 与“零值”比较的 if 语句。(3分)6 T6 o+ X) I) G/ W+ K
) I2 f, J" f1 ]% Q' h
标准答案:6 X+ N6 Q; g7 x7 T$ U; D5 u: K# |5 G
2 z! q1 p1 y+ ~, E
    if ( flag )
9 ^! s+ Y& n7 [3 _5 N( A1 V
) s2 u+ \$ k* B# ?) V    if ( !flag )
" V2 [4 w, E8 S+ H$ Y如下写法均属不良风格,不得分。
7 E' o0 E% S, j# i% _7 Z( ?7 e) @1 n2 F  S7 A% v5 |7 v
    if (flag == TRUE)   
; }: L* {$ F2 ?* S  i- I2 v: B3 l5 a$ a0 p6 s% b7 k
    if (flag == 1 )       q* N+ Y& l; y
* o3 H) z3 P6 g2 O
    if (flag == FALSE)  
* a) g1 A: c: r. X0 k6 I# D: {! ?+ C, D
        if (flag == 0)        C% Y( v  ^3 z/ P- z# S; \. t

4 j; G) V0 `, Q请写出 float  x 与“零值”比较的 if 语句。(4分)
; l( _' W. \( J% f* `& N3 i6 [) {' t$ A8 K+ g# K1 ?
标准答案示例:
/ g; b8 }2 R) _9 x# F
. J- f6 z& M* O. Econst float EPSINON = 0.00001;
0 Q5 q9 G, W  d7 F4 R! m; |! U
* z: D9 x* n  [5 Aif ((x >= - EPSINON) && (x <= EPSINON)
0 R- s- ?9 H1 x' a' j0 X, w8 N
% j# d! S$ u% v. y+ _不可将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”此类形式。
0 ]( ^: V5 z  a7 |. b+ C% B2 c* i5 `
   4 B* W4 z: K& x
  + {/ N0 _  b/ N' Y& u; x  b' _
5 m* C3 ^" P! Z
如下是错误的写法,不得分。# m9 @8 \/ G5 `5 ]

  H* ?. F6 B* ]5 ]8 t/ c8 ~3 _# Y    if (x == 0.0)   
" f0 ?8 J$ V  w% [' R
# G+ h6 I! e2 @* i    if (x != 0.0)      
4 S* o8 D, _8 t" W( F; z) P* `: Q# X" U3 R$ C
      j* D. L+ I; l  K
, X% g1 E1 e: R) c' a
请写出 char  *p 与“零值”比较的 if 语句。(3分)% R# W, U) y1 j
7 a9 i. \* Y2 G! H
标准答案:. V% s. F) P# B# z

) C- I5 S% |) C3 V% p* `    if (p == NULL). V6 T, E* V* y( R. b% a5 q4 U( K

5 a  A$ g, y) N1 W1 b% ?: S2 d* M" s    if (p != NULL)5 i1 p$ V4 ?( E5 I
如下写法均属不良风格,不得分。
- i' a* q# u( ]8 O- w- {
  m$ ?0 W7 L  a( J# I    if (p == 0) 2 F( T  M9 Z$ u7 n

0 u' m, B; |4 _  S, r    if (p != 0)     8 `! a, J9 h- `" B9 b
8 e+ i) i4 g. Y' g2 U* y- g5 ]
    if (p)  
6 n% U6 \/ u7 v$ \: n
5 O; F/ D% `4 l/ {        if (!)      
" Z, W7 o6 M' y: c, W$ x& [
, Y! ^& Q0 c( y1 Y' T/ L* P看到了吧?
发表于 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 | 显示全部楼层
点去睇试卷的??
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-17 05:55

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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