W
wolfsong
Unregistered / Unconfirmed
GUEST, unregistred user!
按:吴滔的这篇文章在CSDN上发帖后,在CSDN上引起了一些讨论,今特全文文录下,以做收藏!!
主 题: 关于一些面试的感想,近来看看吧!
作 者: zaozi (枣子)
等 级:
信 誉 值: 97
所属论坛: Visual C++
问题点数: 20
回复次数: 236
发表时间: 2002-4-21 20:55:42
(枣子原创--www.vcroad.net wutao8@263.net)
做为一名大四的学生,我面试过不少的单位,有成功的也有失败的,但是对我来说所有的失败在某种意义上都是一种成功,特别是我下面写的这些,写这篇文章的时候,我已经签了南京的一家软件公司,但是想起今年2月21日我面试苏州台湾的IT公司的经历联想到我们现在
学习编程的一些情况我真的深有感触,这次面试使我深深的体会到了失败但也收获了很多。我要说的将分成三部分,1.是
我面试的具体经过2.是由面试想到的3.现今我应该做的。当然这些话很大程度上是我个人的意见,不可能完全得到大家的赞同,所以
在某些观点上如果哪位朋友觉得跟我的有很大出入,请不要介意,也不要对我攻击,就当我没有说过,欢迎和我联系共同探讨这些问题!我的EMAIL:wutao8@263.net
1.面试经过
大约在年前我接到了台湾瑞晟(Realtek)苏州公司的面试通知,通知我2月21日到苏州工业园区面试,接到面试后的几天我把一些专业
课温习了一遍,特别是C++和数据结构,由于大学几年里,我一直专研这些方面,加上通过了高级程序员的考试,对于一些常用的算法
我差不多也达到了烂熟于胸的地步,当时的感觉是如果问了我这些方面的问题我应该是没有问题的!
21日那天我被安排在4:30面试,由一位技术人员单独给我面试,在问了一些简单的问题之后他给我出了一道编程题目,题目是这样的:
(由于具体面试的题目比较烦琐,我将其核心思想提取出来分解成了两个独立的简单的问题,有可能问题分解的不当,请大家见谅,实际面试了一个的问题但比其复杂很多,而且涉及一些高等数学变换)
1) 写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n
哼,我的心里冷笑一声!没想到这么简单,我有点紧张的心情顿时放松起来!
于是很快我给出我的解法:
long fn(long n)
{
long temp=0;
int i,flag=1;
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
for(i=1;i<=n;i++)
{
temp=temp+flag*i;
flag=(-1)*flag;
}
return temp;
}
搞定!当我用期待的目光看着面试官的时候,他微笑着跟我说,执行结果肯定是没有问题!但当n很大的时候我这个程序执行效率很低,
在嵌入式系统的开发中,程序的运行效率很重要,能让CPU少执行一条指令都是好的,他让我看看这个程序还有什么可以修改的地方,
把程序优化一下!听了这些话,我的心情当时变的有点沉重,没想到他的要求很严格,之后我对程序进行了严格的分析,给出了改进了的方案!
long fn(long n)
{
long temp=0;
int j=1,i=1,flag=1;
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
while(j<=n)
{
temp=temp+i;
i=-i;
i>0?i++:i--;
j++;
}
return temp;
}
虽然我不敢保证我这个算法是最优的,但是比起上一个程序,我将所有涉及到乘法指令的语句改为执行加法指令,既达到要题目的要求而且
运算时间上缩短了很多!而代价仅仅是增加了一个整型变量!但是我现在的信心已经受了一点打击,我将信将疑的看者面试官,他还是微笑着
跟我说:“不错,这个程序确实在效率上有的很大的提高!”我心里一阵暗喜!但他接着说这个程序仍然不能达到他的要求,要我给出更优的
方案!天啊!还有优化!我当时真的有点崩溃了,想了一会后,我请求他给出他的方案!然后他很爽快的给出了他的程序!
long fn(long n)
{
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
if(0==n%2)
return (n/2)*(-1);
else
return (n/2)*(-1)+n;
}
搞笑,当时我目瞪口呆,没想到他是这个意思,这么简单的代码我真的不会写吗,但是我为什么没有往那方面上想呢!他说的没有错,在n很大很大的时候这三个程序运行时间的差别简直是天壤之别!当我刚想开口说点什么的时候,他却先开口了:“不要认为CPU运算速度快就把所有的问题都推给它去做,程序员应该将代码优化再优化,我们自己能做的决不要让CPU做,因为CPU是为用户服务的,不是为我们
程序员服务的!”多么精辟的语言,我已经不想再说什么了!接着是第二个问题:
2). 他要求我用一种技巧性的编程方法来用一个函数实现两个函数的功能n为如:fn1=n/2!+n/3!+n/4!+n/5!+n/6!
fn2=n/5!+n/6!+n/7!+n/8!+n/9! 现在用一个函数fn(int n,int flag)实现,当flag为0时,实现fn1功能,如果flag为1时
实现fn2功能!他的要求还是效率,效率,效率!说实在话,如果我心情好的话我应该能给出一种比较好的算法,但我那时真的没有什么心思
再想了,我在纸上胡乱画了一些诸如6!=6*5!的公式后直截了当的跟他说要他给出他的答案!面试官也没有说什么,给出了他的思路:
定义一个二维数组 float t[2][5]存入{{2!,3!,4!,5!,6!},{5!,6!,7!,8!,9!}}然后给出一个循环:
for(i=0;i<6;i++)
{
temp=temp+n/t[flag];
}
最后得到计算值!呵呵,典型的空间换时间的算法!
这些总共花了50分钟的时间,还有十分钟我就跟他很随意的聊聊天,聊了一些编程以及生活的问题,那时的我已经很放松了,
因为我知道这次面试结果只有一个:失败。5:30的时候面试官要我等通知,于是我离开了他们公司。这就是面试的整个经过!
2.由面试想到的
真的是很失败啊!我记得那天下好大的雨,气温也很低,我边走边想,从5:30一直走到7:30,全身都湿透了,又冷又饿,但是我只是一直走,脑子里面充满了疑惑,我也想让雨把自己淋醒!看到这里有些朋友可能觉得那些面试题目不算什么如果让自己做的话肯定能全部答对,我肯定相信你,因为我从未怀疑过中国程序员的能力,我认为中国有世界上最好的程序员,我也从未认为自己是高手,所以我做不出来不代表中国程序员比台湾或者别的地方的程序员差,所以我就从我的角度,我的所见所想来谈一些感想:
不错全世界都有优秀的程序员,中国也不例外,但是我疑惑的是:到底中国和台湾或者国外的优秀的程序员的比例到底是多少?台湾我不知道,中国100个程序员里有几个是优秀的呢?我根本算不上,从上面的表现就足以说明一切了!是1个?5个?10个?50个?这个数字我不敢乱猜,恐遭网友一顿痛骂,那么我们国内有多少人学习计算机呢?拿我们学校来说,计算机97级4个班,98级5个班,99级10个班,2000级17个班,人多了,老师怎么办?我们学校的做法是让研究生上课,然后呢?补考一抓一大把,大把大把的补考费落入了学校的口袋,还说现在的学生素质低!真是好笑,我都不知道学校这么做是为了什么,为国内培养大量的程序员吗?学生们能真正学到计算机知识吗?好了,我敢讲,在我们学校学习编程学生和优秀程序员(注意我指的是优秀,只会编几个糟烂程序的人算不上)的比例应该是100:0.1
在这种比例下虽然我们中国学习编程的人铺天盖地,但是想想有多少个人能真正为中国软件业发展作出贡献,有多少人能真正写出优秀的程序名扬海外!
我从学习编程以来,不管是自学还是老师指导,从来都是解决问题就好,编出程序来就行,我的疑惑是:我们有真正的强调过程序的效率,程序的质量吗?我们有仔细分析过我们写的东西,看看有没有可以改进的地方,看看有没有简单的方法来达到同样的目的呢?我问心自问,我发现,我从来没有对我写出来的程序进行过优化,最多就是进行详细的测试,然后Debug,但是这就足够了吗?这些天我偶尔发现我曾经写过的一个游戏,那是一年前我刚加入www.vcroad.net做为其中一员时候,感觉应该拿点东西出来,然后花了一个星期的时间写出来的!程序不算复杂,但是用到了不少数据结构的东西,也用到了一些精彩的算法,加上windows的界面和游戏的可玩性,写完后受到了不少好评,我当时真的很佩服自己!但是现在看呢:没有一句注释,好多丑陋的函数名比如:void chushihua(),好多没有必要的变量,可以用简单语句完成工作的我使用华丽的算法,大量使用全局变量.....,说不好听的话,六百多行的程序除了能运行之外就是一陀屎!如果一年前我能听到一些反面意见的话,大概我能早一点觉悟,但是自从原代码在网站发布以来听到的都是赞美之词,没有一个人向我提出程序改进的意见,这又说明了一个什么问题呢?很值得思考啊!
还有一个疑惑是:我们说的和做的真的一样吗?我在学校的时候曾经受学院指派承办过一个计算机大赛,请了一个老师出决赛的题目,主要是一些算法题目,这个老师可能是我上大学以来唯一敬佩的老师了,从程序调试到打分,对于每个程序都仔细分析其时间效率和空间效率,然后综合打分,四十个人的卷子,老师从下午三点一直调试到晚上十点,在有些写的精彩的语句后还加上批注。我真是高兴很遇到这样的老师并且和他做深入的交流,但在事后,却发生了一件不愉快的事,在比赛中获得第二名的学生找到我,说他程序全部调试成功应该给他满分,并且应该得第一,我说不过他,最后调出了他的原程序和第一名的原程序对比,不错,两个程序都运行的很好,这时,那个同学开口了:“我的程序写的十分简捷明了,仅仅数行就完成了题目要求,而他的却写了一大堆,为什么给他的分多过给我的分。”我当时很是气愤,如果不是老师负责的话,那么现在第一名和第二名的位置真的要互调了,拜托,不是程序的行数越少程序的质量就越高,我记得我跟他大谈这方面的道理,最后说服他了!哈哈,但是我,只能说说而已,我不知道还有多少人一样,说起来头头是道,但心里却压根就从未重视过它!
3.我打算做的!
其实那天我想到的远不止上面那么多,但是我不想再说了,因为我猜想看这篇文章的网友大概都有一肚子的感想,一肚子的抱怨,借用这篇文章发泄可不是我想达到的目的,在上面我把自己骂的一文不值也不是妄自菲薄,但是在某些方面我真的做错了,或者说是偏离了正确方向,现在是矫正方向和重整旗鼓的时候了,就象我前面说过的,我相信中国有世界上最好的程序员,我也相信我的水平不会一直保持现状,我现在就收拾起牢骚真正的实干起来!
真的很巧,就写到这里的时候我在网上偶尔发现了这篇手册,我不知道这预示着什么,但是我想如果我照下面这个基本原则一直踏实做下去,我一定会实现我的理想---一名优秀的软件设计师!
(下面这些文字不是我的原创,是我偶尔在网上发现的,我真的很幸运能看到这些,这篇文章也随着下面的文字而结束,我真心的希望您能从这篇文章中得到启发,这篇文章欢迎大家随意转载,您可以不写作者是谁,但是请您写上www.vcroad.net原创,谢谢您的支持)
作者:金蝶中间件公司CTO袁红岗
不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。
1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。
2. 丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。
3. 最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。
4. 不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。
5. 对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。
6. 多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。
7. 良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。
8. 韧性和毅力。这也许是"高手"和一般程序员最大的区别。A good programming is 99 weat and 1?ffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。
这些是我这几年程序员生涯的一点体会,希望能够给大家有所帮助。
回复人: ljp3000(坏坏) ( ) 信誉:100 2002-4-21 21:32:55 得分:0
excellent!
楼主, 好样的。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-21 21:41:37 得分:0
谢谢您的夸奖,我希望我们一起努力!
Top
回复人: chinacyy(野人) ( ) 信誉:100 2002-4-21 21:44:45 得分:0
有一定道理,但我觉得还是要看做那方面的东西了!
Top
回复人: leepiaoping(回首乱山横) ( ) 信誉:100 2002-4-21 21:48:46 得分:0
反思ING
Top
回复人: evilks(傲野) ( ) 信誉:100 2002-4-21 22:03:26 得分:0
写的真棒,我们大家应该好好反思这个问题,这也许就是一个优秀的程序员于普通程序员的关键所在了。
Top
回复人: kingofvc(还是喜欢97) ( ) 信誉:100 2002-4-21 22:06:46 得分:0
我们真的那么糟吗?
好像是的
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-21 22:16:14 得分:0
我希望我这篇文章能带给大家一点收获!也欢迎观点和我不一样的朋友发贴,大家求同存异,探讨一下!
Top
回复人: 2ndboy(丢丢) ( ) 信誉:100 2002-4-21 22:27:14 得分:0
我们学校(算省重点高校)计算机系的学生99%没有写过单个超过500行的程序,更别说别的了!连个交流的人都没有!只好到CSDN !
Top
回复人: mahongxi(烤鸡翅膀)(色摸) ( ) 信誉:95 2002-4-21 23:17:27 得分:0
说实话,我一看到T,我就知道他要考你数学知识.
文章很好,希望你能写出更多感想,大家共免
BTW,你认识和钰鹏吗?他是我朋友,好久没联系了.
Top
回复人: lyoubing(飘在风中的鱼) ( ) 信誉:100 2002-4-21 23:48:35 得分:0
好贴!!!
Top
回复人: steedhorse(晨星) ( ) 信誉:111 2002-4-22 0:43:37 得分:0
收藏。
Top
回复人: dynku(随风来去.cn) ( ) 信誉:100 2002-4-22 1:20:38 得分:0
大部分编程,实际上对算法的要求真的很低,要求的是稳定,可控制,还有就是结构清晰,所以千万不要钻牛角尖
Top
回复人: quanxiongwei(毛毛熊) ( ) 信誉:100 2002-4-22 2:03:14 得分:0
收藏。
Top
回复人: shines(Othelloing) ( ) 信誉:100 2002-4-22 5:14:29 得分:0
阅
Top
回复人: shines(Othelloing) ( ) 信誉:100 2002-4-22 5:25:19 得分:0
如果写成这样,连if 和 %(取模)都省了:)
long fn(long n)
{
if(n<=0)
{
printf("error: n must > 0");
return 1;
}
return (n>>1)*(-1)+(n&1)*n;
}
Top
回复人: danieltang(如烟往事俱忘却,心底无私天地宽...) ( ) 信誉:100 2002-4-22 6:21:15 得分:0
認識自我,挑戰自我,提高自我...
Top
回复人: delphihero(阿蒙(C++)) ( ) 信誉:97 2002-4-22 8:04:13 得分:0
感觉上的学越多,创造力越少
Top
回复人: dirboy_tym(笨小孩) ( ) 信誉:100 2002-4-22 8:07:17 得分:0
简单的问题看出了复杂的东东
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-22 9:17:02 得分:0
mahongxi(烤鸡翅膀)(色摸)
和钰鹏也是我朋友啊,他好象要工作了!最近联系也少了!
再次感谢上面所有朋友能直言自己的看法!
Top
回复人: wu_apple(寂寞高手) ( ) 信誉:100 2002-4-22 9:42:34 得分:0
值得思考!!那些大学老师更应该看看!!
Top
回复人: kboy110(友爱天使) ( ) 信誉:100 2002-4-22 9:44:35 得分:0
zaozi (枣子)
写得好啊!!!!!
看看中国的培养程序员,也算是程序员吗????
我也是一个想成程序员,但是无法成为程序员的想成为程序员的人!!!!!!
谢谢你的文章!!!!!!
写得very good!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
Top
回复人: Knight_T(骑士) ( ) 信誉:107 2002-4-22 9:53:07 得分:0
这是什么,我要泼点冷水。
Top
回复人: scxy(小熊) ( ) 信誉:94 2002-4-22 10:00:32 得分:0
谢谢
Top
回复人: zerone510(仙外有仙) ( ) 信誉:101 2002-4-22 10:07:53 得分:0
有感
Top
回复人: charmfox(charmfox) ( ) 信誉:100 2002-4-22 10:12:51 得分:0
面试官对你其实就是很基本的要求呀!
难道大学里,没有学过数值分析这门课?那里讲的大部分就是要求你写程序之前先要用数学的思想简化算法。主要就是针对效率的问题。
计算机并不是会几个语言就行了,主要的是思想。我认为你学习的时候就忽略了这个问题。
Top
回复人: K_zErRo(蝶影) ( ) 信誉:100 2002-4-22 10:17:50 得分:0
我也是大四的学生,很有感触,反思反思
Top
回复人: macbolo() ( ) 信誉:100 2002-4-22 10:49:59 得分:0
你说得太好那
Top
回复人: Taken(铁拳) ( ) 信誉:100 2002-4-22 11:40:13 得分:0
我只是一个普通菜鸟,但还是想说两句个人感受!
首先要肯定,你的文章让我反思,我告别校园后已经很久没有反复
斟酌自己的程序了,说来真是惭愧。
在计算机刚发展起来的时候,程序的效率与所需要的运行空间几乎
成了评价程序员的标准。我认为现在硬件发展速度很快,不论是CPU
还是内存,性能都在惊人的速度提高,代码的效率与所占空间反而
显得次要了(当然要看哪个级别的程序,系统程序对这些的要求仍
然很高),这种次要是相对于代码的可读性于与重用性的。这对于
制作应用程序来说更为重要。
我想这次面试不能完全算你的失败,只能说经验不足。举例来说,
如果他想通过你的代码来看你的思维过程的话,如果你第一次给的
就是你的文章中他索要的代码,他仍然不会满意。我觉得他所讲的
提高效率也没有什么技巧,无非是用空间换取时间,把需要重复计
算的内容存放起来,这的确也不失为一个不错的方法。但是你不觉
得这样做会使你的代码通用性降低吗?我想就你的水平,如果能准
确把握考官的意思,写的程序是不会有问题的。
以上只是个人见解,请各位赐教!
Top
回复人: shines(Othelloing) ( ) 信誉:100 2002-4-22 15:04:25 得分:0
其实第一题还可以写成这样,更精髓:
long fn(long n)
{
if(n<=0)
{
printf("error: n must > 0");
return 1;
}
if(n&1)
return n/2;
else
return -n/2;
}
比下面的好多了吧,
long fn(long n)
{
if(n<=0)
{
printf("error: n must > 0");
return 1;
}
if(0==n%2)
return (n/2)*(-1);
else
return (n/2)*(-1)+n;
}
我也同意taken(铁拳)的看法,你没有失败,只要你写的程序是正确的就没有
失败,只是没有完全理解他的意思,何况你还优化了一下,不过,即使第二题,
你没有使用空间换时间的方法,也没有必要使用6!=5!*6的递归,呵呵,还有好
多代码通用性强而效率高的方法(相对而言)。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-22 15:30:34 得分:0
charmfox(charmfox)
您说的很对,但是我们学校就是没有开这些课程,
开的都是CIMS,决策支持,信息工程
所以我们的数学基础不好!
回头我一定补上这些课程!
Top
回复人: Hover(翔)(中国鹰派联盟成员) ( ) 信誉:95 2002-4-22 15:32:39 得分:0
...
Top
回复人: Hover(翔)(中国鹰派联盟成员) ( ) 信誉:95 2002-4-22 15:33:13 得分:0
...
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-22 15:36:01 得分:0
还有就是请大家注意,真正的面试题目不是我文章中写的,我只是提取了面试官的思想,简化了很多,由于水平有限,不能把问题模拟的很有深度,我只想借用其思想来说明问题,所以请大家不要再在面试题目上面做文章了!谢谢!
Top
回复人: jaidy(骑士) ( ) 信誉:97 2002-4-22 15:43:34 得分:0
深有感触!
considering...
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-22 15:43:38 得分:0
taken(铁拳)
其实我开始也是您这么想的,但是面试官跟我交谈的时候他强调了他们现在做的是嵌入式系统,如PDA之类的,不是通用的软件!我觉得我当时还是没有那种效率的思想!只是以为他会考察我算法之类的东西!
Top
回复人: chuqianyiding(出前一丁) ( ) 信誉:100 2002-4-22 15:46:09 得分:0
想的很多,却说不上来。
心情很复杂……
Top
回复人: shines(Othelloing) ( ) 信誉:100 2002-4-22 15:51:22 得分:0
纠正一下,上面的错了,
if(n&1)
return n/2;
else
return -n/2;
应该是:
if(n&1)
return (n>>1)+1;
else
return (-n)>>1;
Top
回复人: Hamas(Hamas) ( ) 信誉:100 2002-4-22 16:01:15 得分:0
枣子哥!呵呵!你这文章写的 N 棒哪!我也要放在我的主页(http://hamas.126.com)上让广大网友好好看看!
Top
回复人: shines(Othelloing) ( ) 信誉:100 2002-4-22 16:02:38 得分:0
上面错了,应该是这样:
if(n&1)
return (n>>1)+1;
else
return (-n)>>1;
Top
回复人: secondlf(风) ( ) 信誉:100 2002-4-22 16:05:29 得分:0
多谢,提醒了一个长期被我忽视的地方。
(不过,说实话,给我也不会想到去用二维数组,容易出错。)
Top
回复人: lius_lzc(小刘) ( ) 信誉:100 2002-4-22 16:09:00 得分:0
后继有人啊!!!!!!!!!!!!!!!!!
真正的程序员
Top
回复人: jet_u() ( ) 信誉:100 2002-4-22 16:14:28 得分:0
收场
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-22 16:24:58 得分:0
我想申明一下,现在的帖子是不完全的,可能是给斑竹删掉了,因为后面一部分是引用一为有名程序员的话,如果大家想要看完整的文章话,在
www.vcroad.net
有!谢谢您的支持
Top
回复人: lihua(lihua) ( ) 信誉:97 2002-4-22 16:58:47 得分:0
帮你UP一下,呵呵
Top
回复人: iceheart(冷酷的心) ( ) 信誉:100 2002-4-22 17:20:58 得分:0
对于第二题:
/*
2). 他要求我用一种技巧性的编程方法来用一个函数实现两个函数的功能n为如:fn1=n/2!+n/3!+n/4!+n/5!+n/6!
fn2=n/5!+n/6!+n/7!+n/8!+n/9! 现在用一个函数fn(int n,int flag)实现,当flag为0时,实现fn1功能,如果flag为1时
实现fn2功能!
*/
我认为还应该做些优化工作:
首先合并同类项:
fn1 = n * (1+(1+(1+(1+3)*4)*5)*6)/6!
= n * (517/720);
fn2 = n * (1+(1+(1+(1+6)*7)*8)*9)/9!
= n * (3610/362880);
然后函数可写成:
float fn( int n, int iWhitch)
{
float iTemp;
switch(iWhitch)
{
case 0:
iTemp = 517/720;
return iTemp * n;
case 1:
iTemp = 3610/362880;
return iTemp * n;
default:
...//err break;
}
}
为什么要给CPU增加不必要的负担呢?
Top
回复人: shines(Othelloing) ( ) 信誉:100 2002-4-22 18:13:35 得分:0
呵呵,楼上的不错,www.vcroad.net 打开好像没东西,也许是你们的服务器问题吧
Top
回复人: Taken(铁拳) ( ) 信誉:100 2002-4-22 20:54:02 得分:0
我也打不开,很想拜读阁下的全文
Top
回复人: lihua(lihua) ( ) 信誉:97 2002-4-22 22:52:23 得分:0
在线人数太多的原因吧。。
Top
回复人: shines(Othelloing) ( ) 信誉:100 2002-4-23 4:18:33 得分:0
我把后面的一段贴上来,。。。
真的很巧,就写到这里的时候我在网上偶尔发现了这篇手册,我不知道这预示着什么,但是我想如果我照下面这个基本原则一直踏实做下去,我一定会实现我的理想---一名优秀的软件设计师
(下面这些文字不是我的原创,是我偶尔在网上发现的,我真的很幸运能看到这些,这篇文章也随着下面的文字而结束,我真心的希望您能从这篇文章中得到启发,这篇文章欢迎大家随意转载,您可以不写作者是谁,但是请您写上www.vcroad.net原创,谢谢您的支持)
作者:金蝶中间件公司CTO袁红岗
不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。
1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。
2. 丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。
3. 最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。
4. 不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。
5. 对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。
6. 多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。
7. 良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。
8. 韧性和毅力。这也许是"高手"和一般程序员最大的区别。A good programming is 99 weat and 1?ffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。
这些是我这几年程序员生涯的一点体会,希望能够给大家有所帮助。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-23 10:26:41 得分:0
shines(Othelloing)
十分感谢!
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-23 10:30:56 得分:0
shines(Othelloing)
十分感谢!
Top
回复人: huiqun(huiqun) ( ) 信誉:100 2002-4-23 10:54:55 得分:0
很棒
Top
回复人: huiqun(huiqun) ( ) 信誉:100 2002-4-23 10:56:42 得分:0
有空来信;huiqun0@163.com
Top
回复人: yahooboy(Lostmind) ( ) 信誉:100 2002-4-23 14:15:46 得分:0
楼主,写得不错,努力、奋斗!
E-mail:SingleMemory@etang.com
Top
回复人: lihua(lihua) ( ) 信誉:97 2002-4-23 16:18:21 得分:0
再帮你UP一下。。呵呵。。。
一个无聊人
Top
回复人: Behard(大家都快要精通BCB了吧......) ( ) 信誉:97 2002-4-23 17:42:34 得分:0
我觉得第一道没有做对还是可以原谅的,但是考官已经给了你第二次机会,你还是一样就没有什么好说的了!
Top
回复人: mygodmymy() ( ) 信誉:100 2002-4-23 18:23:56 得分:0
看了大家对第二题的求解
我觉得不太妥当
计算机本来就是方便大家的
为何要我们自己去算6!
如果真要这样,那万一算n*(2!+3!+...+10000!)时,
为了提高所谓的效率,就要自己去算这个常量吗?
而且以我的观点,所谓用二维数组的方法,简直就是无聊
当然了,嵌入式系统实现这种功能时可能要自己去算
但是把它当所谓的好方法就走极端了
呵呵
计算机是轻闲了,我们可要累死了!
Top
回复人: zousky(麻烦) ( ) 信誉:100 2002-4-23 18:24:16 得分:0
拙见:
很多情况是需要根据情况而言的。如果工程很紧张,时间很短,真的不如将优化程序算化的时间多用到程序调试上面。对项目而言,安全、稳定才是真正的第一。本人一点拙见。
Top
回复人: liuquan(liuquan) ( ) 信誉:100 2002-4-23 18:34:09 得分:0
这些问题很简单。
优秀的程序会在不同的场合写出合适的程序。
Top
回复人: cryingboy(哭泣男孩) ( ) 信誉:100 2002-4-23 18:44:51 得分:0
写得太好了!
得好好的反思一下,特别是自己!!
Top
回复人: scy_cd(ClientDataSet) ( ) 信誉:100 2002-4-23 19:04:08 得分:0
写的真好!
Top
回复人: oddes(尊龙) ( ) 信誉:100 2002-4-23 19:06:11 得分:0
非常有趣。
某人小时候碰到 1+2+..+100当时居然懂得用 (1+100)*50的方法做。7、8年后某人来读某学校的时候,学程序写循环,好像也是这么一道题,某人当时非常奇怪,某人还是小学的思维,觉得没有必要用循环,也觉得没有必要用计算机,直接写答案就可以了。
后来某人说服自己用的循环来计算。
于是,越读越... ...。
主要是题海害的,以为世界是死板的,太多的灵性已经没有了。
某人现在的感觉是,能简单有效的方法是最好的方法。
Top
回复人: love4cz(^_^)(丑丑)(^_^) ( ) 信誉:103 2002-4-23 19:06:46 得分:0
看了,真实佩服,好样的(^_^)!
Top
回复人: nice521(愉快人生) ( ) 信誉:100 2002-4-23 19:27:40 得分:0
基础扎实是很重要,但是,在实际的工程中,对问题的深入理解,写出让顾客满意的程序,更重要。
Top
回复人: xiayer(corrs) ( ) 信誉:100 2002-4-23 19:27:57 得分:0
太精彩了,能在这里看到这样的帖子,我的收获好大!在这里,感谢上面发表意见的朋友,祝你成功……也祝福中国的程序员们!
Top
回复人: ysycom(夜风吹雪) ( ) 信誉:100 2002-4-23 20:25:07 得分:0
各位编程高手,我急切需要你们的帮忙,我是一名大三的学生,计算机专业,现在课程不太紧,想学一门实用的语言,在学校里边学的都是那些理论,真不知道将来怎么参加工作,你们能不能给点建议,学vc++,vb,java还是其他的。
谢谢了,祝你我们程序员一切顺利,钱途无量!!
请发到我的信箱ysycom@sina.com 不胜感激!!
枣子,你好,看了你的文章很有感触,你一定要给我点建议呀,谢谢了!!
ysycom@sina.com
Top
回复人: xiaolun(小懒) ( ) 信誉:92 2002-4-23 20:45:34 得分:0
呵呵,还是读数学系好吧!
Top
回复人: amu013(三木十三) ( ) 信誉:100 2002-4-23 21:20:11 得分:0
呵呵,我不是计算机专业的,所以我去应聘搞IT时,他们首先就不给我机会了。难道非要计算机专业才能吃这碗饭吗。还有啊,奉贤各位,不要考什么软件水平考试了,都是官僚主义作风。考不出大家的水平来,而且证书拖半年才发。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-23 21:30:00 得分:0
mygodmymy()
我觉得您的想法是错误的,因为,CPU可以为所有人服务,但归根结底是为用户服务的,它的频率是固定的,如果我们程序员为了图方便省事占用CPU,那么CPU留给用户的时间一定就少了!我觉得面试官的话很对。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-23 21:42:34 得分:0
amu013(三木十三)
我有点赞同您的看法,我也考了水平考试,但是我觉得只要把书看看,编编程一般都能过,我还考了高分,但是我的水平还是没有真的那么高,哈哈,中国人本来就很会考试的!我们都是给学校逼的!
Top
回复人: weikeming(丘丘) ( ) 信誉:100 2002-4-23 22:03:04 得分:0
我本来也想用优化的算法的,
可惜工期不等人.
只能设计一个比较较化的程序框架,
然后填入代码,
然后f10......
老板才不管算法不算法,他只要程序能动,不死,能收到钱.
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-23 22:10:32 得分:0
哈哈,这就是中国软件公司竞争不过外国的原因之一啊!
Top
回复人: voohoo2000(zjj) ( ) 信誉:100 2002-4-23 22:50:03 得分:0
毕业也快一年了,觉得肚子里的东西越来越少
真想回到可爱的大学重去看看那些功课
Top
回复人: twelfth(烦就喝可乐) ( ) 信誉:100 2002-4-23 23:06:19 得分:0
TO mygodmymy()
关于是让CPU累还是人累的问题上,我个人同意让CPU去累的看法。
但是CPU现在并不是很能干,好多问题就算优化了算法在N年之内都算不出来呢!或者比如在游戏编程中,如果不把一些该放到查询表的东西放进去,哈,你就会知道什么叫“龟速”了……
你要怪就怪CPU不够快……希望你出生在下个世纪吧,也许那时侯会好一点:}
Top
回复人: stoneyrh() ( ) 信誉:100 2002-4-23 23:09:07 得分:0
good
值得我学习
Top
回复人: twelfth(烦就喝可乐) ( ) 信誉:100 2002-4-23 23:14:44 得分:0
TO mygodmymy()
补充一点,谁也没有让您自己去算10000!,很多优化方法都可以先把它用计算机先算出来的,然后再存起来,只不过是不要在用户觉得不该慢的时候慢下来就可以了:}
还有一点就是我觉得大部分人编软件是“为人民服务”,所以我觉得这个问题是让用户烦还是自己烦的问题:}
Top
回复人: nettm(阿牧) ( ) 信誉:100 2002-4-24 8:30:50 得分:0
一般来说程序的稳定性、可读性和可重用性是最重要的,效率在其次吧。
Top
回复人: lhbchaor() ( ) 信誉:100 2002-4-24 9:07:23 得分:0
小伙子,如果哪个考试官只是这样考你话,证明他仅仅停留在代码级别的,没有软件系统架构思想,你大可不必去那样的公司,现在软件行业是工程思想 行业思想比程序重要得多。当然这些开发工具你得熟练的,这些东西你在项目实施中才会感觉到的。
Top
回复人: zzhcom(zzhcom) ( ) 信誉:100 2002-4-24 9:11:36 得分:0
其实我觉得阶乘那道题那个考官的解法还不是一样的麻烦,还不是要通过循环来先求阶乘,然后才能够存到内存中去。更谈不上什么空间换时间。
要不然就是它必须自己用手工先计算好那些阶乘,那也太落后了吧!
Top
回复人: boredom_vc(无聊) ( ) 信誉:100 2002-4-24 9:18:08 得分:0
多谢!!
Top
回复人: lchlovely(贝贝) ( ) 信誉:97 2002-4-24 10:56:46 得分:0
靠,大学没毕业,高级程序员都通过了啊。
Top
回复人: webjj(超级笨笨) ( ) 信誉:100 2002-4-24 11:19:06 得分:0
真的写的不错,现在程序员太多太烂!在写完代码之后我们应该进行斟酌!
Top
回复人: yiyiyaya(咿咿呀呀) ( ) 信誉:100 2002-4-24 12:24:48 得分:0
"韧性和毅力。这也许是"高手"和一般程序员最大的区别"
我觉得这一点是最重要的!
我是一个研究生,也是个真正的超级大菜鸟,大学里面能学到什么?完全靠
自己!
凭自己的兴趣爱好做事情、并坚持下去,才能成为出色的人,无论是程序员
还是系统分析员……
现在已经没有勇气来解剖剖析自己了!每天检讨、每天犯错误的日子更没趣。
看到周围既有嘻嘻哈哈混日子的也有勤勤恳恳的人,自己能做什么?定一个不太高的目标,一点点补吧!
Top
回复人: hd506lg(让我们一起来吧) ( ) 信誉:100 2002-4-24 12:45:59 得分:0
good man
Top
回复人: lonelywind(晚风) ( ) 信誉:100 2002-4-24 12:55:12 得分:0
同感啊!
Top
回复人: zz321() ( ) 信誉:100 2002-4-24 15:09:46 得分:0
ai....
Top
回复人: lijiesdhua110(琥珀泪水) ( ) 信誉:100 2002-4-24 15:27:55 得分:0
ai 你好可爱
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-24 17:33:29 得分:0
感谢大家的支持,也感谢所有的朋友提出自己的意见!
我将从我做起,努力奋斗!
Top
回复人: myan() ( ) 信誉:100 2002-4-24 17:40:27 得分:0
如果是一年前,我会很赞成这篇文章的说法。但是现在,我觉得“不尽然”。
首先,我觉得你过于看重在面试中的表现了,也无形中把问题放大了。要知道,考官平时也就是你我一样的程序员,获得考察他人机会的时候,经常会借机大捞心理满足感。于是精心准备一些问题,对你进行突然袭击,问题中必然是有些玄机的,所以在面试的紧张气氛中,一般的人都会中圈套。这种面试根本不可能考察你的真实水平,而且你平时无论多么努力钻研,遇到这些类似智力急转弯的所谓面试,都难保不出问题。反过来,如果你精心准备一些这种问题来问上面那些洋洋自得的考官,多半他们照样也有目瞪口呆以至于恼羞成怒的表现。爱因斯坦曾经在一次普林斯顿的普通物理竞赛里得了个不及格。
现在论坛上有很多标题为“XX公司面试题”之类的帖子,还在学校里的同学一般都会很感兴趣。其实你看那些面试题,大同小异,不是脑筋急转弯,就是用一些所谓心理分析的题目绕十八个弯来分析你的性格等等。说得难听一点,这些东西纯属打着高技术面纱的狗皮膏药,里头科学的成份很少,根本不能作为判断实际人才的标准。某些看上去很朴实的考察,实际上在面试的特殊场合里,也会在一定程度上失去评判的价值。
现在的面试好像就是考察你够不够聪明。中国人对于“聪明”的理解有一些独特的地方,比如我们认为反应快就是聪明,善于解题就是聪明,等等,这直接体现在我们的考试制度里,并且经由考试制度大大强化。实际上编程也好,其他工作也好,创造力、想象力、设计能力、统筹规划能力、对问题的捕捉和把握能力、钻研精神、学习和工作方法等等这些不属于“聪明”范畴的东西,才更为重要。而所有一切中,最最重要的东西,往往不是你的智力,而是你的性格和品质。大家经常谈到比尔盖茨,说他聪明,其实他聪明与否倒在其次,头脑清醒,判断力强,斗志顽强,这些东西才是成功的关键。而我们一说起来,就一句话,他聪明。大家到工作中自然会发现,聪明不聪明,尤其是我们所谓的聪明,根本不重要。
胡说了一通,也没什么逻辑。只不过我想告诉大家,你将来获得成功的那个位置,不太可能是你经过面试得到的。别在面试上花太多时间,想想哪些是真正重要的吧。
Top
回复人: simo(糊涂大虫) ( ) 信誉:89 2002-4-24 17:46:25 得分:0
众说纷纭
Top
回复人: myan() ( ) 信誉:100 2002-4-24 17:49:11 得分:0
补充一句,以考试为指挥棒来学习固然不对,以面试为指挥棒来学习那就简直荒谬。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-24 18:01:02 得分:0
呵呵,不管面试官或他们公司好也好,坏也好,如果我真的强的话,就上面的题目来说是应该作出来的(暂且不论题目出的好坏),原因就是我缺少这方面的锻炼啊,我不是通过什么来指挥学习,我现在是改正错误,纠正方向!我永远需要学习!
Top
回复人: yung(追★族) ( ) 信誉:100 2002-4-24 18:24:37 得分:0
值得深思!
究竟是我们的教育体制的问题还是自身的问题呢?
不能否认的是,现在的中国教育在朝着应试教育的方向越走越远!
Top
回复人: niewq(强强) ( ) 信誉:100 2002-4-24 18:33:29 得分:0
如果你有深厚的物理学与数学知识,回头来学计算机,你会觉得太容易了,太轻松了。
Top
回复人: caishuni() ( ) 信誉:100 2002-4-24 18:41:57 得分:0
To shines(Othelloing):
大哥:我看不懂你写的程序
能不能帮我详细的解释一下
不胜感激.
caishunli@sohu.com
Top
回复人: halcyon(让我们共同进步) ( ) 信誉:100 2002-4-24 19:13:16 得分:0
理解,这就是中国程序员和印度程序员的差距。所以中国程序员顶多是技术高手,不能是软件高手。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-24 20:06:46 得分:0
需要大家一起努力啊!
Top
回复人: itluck() ( ) 信誉:100 2002-4-24 20:26:03 得分:0
我也参加过台湾一家公司的三次面试,公司C语言答卷也全是考有关算法优化与重要关键字的差别。从中可以看出深入研究的重要性,而中国的程序员大都想求大求全,很少能对每行代码进行深入
Top
回复人: SphereEGO() ( ) 信誉:100 2002-4-24 20:30:43 得分:0
同意 shines(Othelloing) 的精辟见解
可是我的看法有一点另类
算法虽然是非常重要,但却取决于你要干什么工作
面试官强调的重点非常明显,是强调代码的执行效率(嵌入式系统)
但是算法并不是全部,如果你做的是普通的软件开发,快速的开发过程和健壮的代码才应该你你面向的重点,当所有工作完成后再在核心运算部分作出适当的算法修正是最好和最正确的。
在一般的开发过程中,如果过分的强调算法,会忽略了开发的方向,加上现在硬件的快速发展,以及技术的不断更新,更应该以技术作为速度的总体因素而不是单独的代码行。
另:
中国的优秀程序员我不知道是多还是少,但是不应该陷入这样的误区:程序员们的能力决定软件的成功与否。
大型软件的成功是有着长时间的积累,有着对技术优缺点精确把握以及对市场的方向正确预测作为决定性因素的。印度就是最好的例子。
再次强调,我也觉得算法是非常重要,那是一切的基础。
Top
回复人: Lovell(拉斐尔) ( ) 信誉:100 2002-4-24 20:37:54 得分:0
我在年前也有一次面试后,在雨里走了两个小时的经历.知道失败了,也察觉到VC++里有些方法和概念我理解的不深,简直是一次承重的打击,我看到了自己的编程能力,与我一直的目的--成为一名优秀的程序员..还差很多,在雨里我洗礼自己......
我不想评论教育太多,大学的教育除了我约束自己学会做人之外,几乎没有什么收获,我很为没有技术的祖国担心,只想学的更多做得更好.很希望与你这样的程序员交流,在你的忧患与奋起中我看到了自己的身影,也感到一种慰籍,我会更坚强地走下去!!
希望大家一起努力!
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-24 20:46:55 得分:0
Lovell(拉斐尔)
愿意交您这样的朋友!
我的QQ:7353105
Top
回复人: myan() ( ) 信誉:100 2002-4-24 21:02:22 得分:0
其实我要说的是,现在所谓面试,做不出来不必大悲,做出来也不必大喜。学技术是为了做事,不是为了考试。如果你以为通过你卧薪尝胆,就可以面对所有面试而从容不迫,那你就大错特错了。比如说,在Win32 API编程方面,我有一点心得,我现在出10个问题,封起来,然后告诉你去学习Win32编程。无论你怎么学习,半年之后,把原来的问题拿出来,估计你还是有多半题目一下子答不上来。题目是无限的,精力是有限的。不要把自己在考试中的表现看得太重要。真到了公司,你不久就知道了,能完成任务的才是牛人。你能不自己动脑子,而接助别人的智力成果作出东西来,那更是牛上牛。
不断学习这是肯定的,精神当然值得赞赏。不过我置疑你的原动力。
你如果真的把精力用在做事上,那么你的第二份工作应该是别的公司给你打电话得到的。如果把精力花在应付面试上,那你就准备不断面试吧。
Top
回复人: wxhcool(沧海) ( ) 信誉:100 2002-4-24 21:15:14 得分:0
是的,很值得我们去深思。告诫我们能时刻有清晰的头脑,对不同的问题,要有不同的解决方案,要有变通的思维。
Top
回复人: myan() ( ) 信誉:100 2002-4-24 21:17:07 得分:0
不过话说回来,基础要扎实。如果你基础不够扎实的话,必然要花时间去补。不过上班以后,确实很困难。
可是基础真正扎实的有几个呢?我一直觉得自己C++不敢说高手,起码C是搞通了。实际上呢?前几天翻了一本书,倍受打击。大家看看下面几个问题:
1. 请大家自己写一个assert宏。95%的人第一次写出来的会是错的,而且不知道错在哪里。
2. 你会用C语言的setjmp和longjmp吗?用这两个函数模拟C++异常机制,保证所有对象在异常发生时获得析构。
3. 什么是heap,什么是free store?
4. 在C89里如何使用不定长结构体?
5. stdargs的使用。
我的意思是,虚心一点准没错,也别以为自己将来能成什么高人。踏实一点,多为你的客户做好服务,这就够了。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-24 21:29:36 得分:0
仁者见仁,智者见智,您说的有一定道理,我虚心接受!
其实我写的文章,跟您的想表达的是一个意思,后面补帖出来一部分也是我想说的,我想您可能是没有看全我的文章,有点误会,在这里我把整篇文章的地址帖出来
http://www.vcroad.net/view.asp?id=844
Top
回复人: myan() ( ) 信誉:100 2002-4-24 21:45:07 得分:0
其实我也不是针对你。跟前面一个网友的感觉一样,中国的应试教育体制害人一辈子,我希望我们能尽早从这个影响中走出来,务实一些。
有机会多交流吧。VC版我很少来,有时间去C++版。
Top
回复人: lele2002(拒绝网恋) ( ) 信誉:100 2002-4-24 22:47:28 得分:0
看不懂,学习ING~
Top
回复人: xiaobinliu(风月神) ( ) 信誉:104 2002-4-25 9:52:37 得分:0
如果你有思想,学而时思之,温故而知新,明确的知道一个方向就好
我大学毕业时,肯定不会你的几个面试题,但是我却通过了同是苏州的
Acer的面试,记得没有什么难度。
不要一味的强调自己需要会什么知识,知识是为人民服务的,如果你能
够掌握驾驭你的知识,而为你服务,开拓你的思维,你就会进步
我也不成功,所写言论也没有权威,大家喜欢的话,就思考思考我说的
不喜欢,就不看好了
Top
回复人: xming076(虚名) ( ) 信誉:100 2002-4-25 9:57:08 得分:0
虽然我已毕业第3年,但还是深有同感,在学校时,教我们计算机的大部分都是其它系留校的少数别的学校本科生,别的本事没有,就会以权谋私,谁和它有过节,谁就不能及格(甚至考通过的)。
一个鸟人出汇编结业试卷,考的时候有两道大题(抄书,然后稍微改一下)有错误,我提出来,那个鸟人还不承认,结果是那两道题我也没做。
类似的情况太多了,唯一一个比较好的老师教组成原理和接口技术的,讲的通俗易懂,其他的太次了。
Top
回复人: xiaobinliu(风月神) ( ) 信誉:104 2002-4-25 9:59:37 得分:0
我也毕业三年
Top
回复人: smlstar(smlstar) ( ) 信誉:100 2002-4-25 10:05:51 得分:0
看了文章我惊出一身冷汗。工作一年了,解决这样的问题我还是有些难度。(可能当初没有打好基础)现在加油还来得及。但是我也认为这是面试方故意搞出的一些东西,难倒别人的同时自己获得满足感。并不是什么项目都会要求算法和效率很高,主要是考虑功能和客户的满意度和易于接受。
也有好多非科班出身的程序员他们做的也很好。
Top
回复人: dynku(随风来去.cn) ( ) 信誉:100 2002-4-25 10:13:04 得分:0
前几天还在关税乐园么
怎么跑到这里来了
说实话,不同的程序开发有不同的需求,每个人也不能样样都精,能够有好的思想,面试不过去有什么关系那,在我接触的项目里头,有重视易用性,有重视开发速度的,有重视稳定性的,要求的不同,必然带来项目管理和程序编制的不同,能灵活面对才是真正的高手
Top
回复人: zhang865(笨秀才) ( ) 信誉:92 2002-4-25 10:25:26 得分:0
我也面试了,可是为什么他就没有问我什么算法的问题,就问我可以看懂MS文档不,我的待遇要求,看了看我的编程时间。
Top
回复人: littlewing() ( ) 信誉:100 2002-4-25 10:41:00 得分:0
这又不是你的错,中国的教育体制就是这样了。曾经有人对中国和外国的小学生考试,是关于手表角度的计算。当时几乎所有的外国小学生都拨自己的手表,而中国的小学生都拿笔。我们这一代人都是这么培养出来的,呵呵,教育的侧重点不一样嘛!
你并不比别人差,一直都是呀!
呵呵,努力吧,我支持你!!
Top
回复人: COOKER(长得很帅,活得很衰) ( ) 信誉:95 2002-4-25 12:44:05 得分:0
凡事没有绝对的,
面试的那个人这样考你,是因为公司搞嵌入式开发,
很重视算法优化和内存的占用,
但如果你搞大型的ERP或其它的一些纯计算机执行的软件的话,
过多的考虑这些就会有些多余.
一个真正的软件设计师,
看重的是对整个系统工程的把握,
而不是局部代码的优化上.
Top
回复人: cui700(cui700) ( ) 信誉:100 2002-4-25 13:09:33 得分:0
真金不怕火炼
别把面试看得太重要
软件的方向也有很多
比如做管理软件开发,就对效率要求弱一些,但也有。
比如我以前的一个同事,她现在已经做研发经理了。反算税款的时候不会用公式求反函数推算,她用循环试算,找出误差小于一元钱的结果,而且对用户宣称最高就能算到这种程度。
再比如她编制了一个计算一个部门几十人的工资的存储过程,运行耗时半个多小时,我用vb写个程序,只用了几秒钟,改成存储过程肯定还能快。
诸如此类的问题可以衡量出很多程序员的水平,目前软件开发中混子很多,做一个项目很久撤不出来的现象很多,但他(她)们还有很多技术以外的方法继续混下去。
能够自省的人,还能有大的进步
按目前中国国情
还是无法较真
尤其做项目
还是难得胡涂呀
Top
回复人: scyangd(自由鸟) ( ) 信誉:100 2002-4-25 14:45:21 得分:0
赞同myan的观点。
还是在稳定性与效率之间找到一个平衡点吧。
Top
回复人: oranges(浮萍) ( ) 信誉:100 2002-4-25 15:08:30 得分:0
我是一名计算机系大四的学生,我在的学校是一个全国重点院校.可是就在这样的学校里,我们班的同学到大四毕设了,才第一次装98或者2000.别的我就不说了.
Top
回复人: tianlinyi(笨蛋) ( ) 信誉:97 2002-4-25 15:17:57 得分:0
我也是一名大四的学生,在南大,我周围的同学也有很多这样的问题,不思进取,看了上面的文章很难过,还好,自己不是这样的人,也曾经劝过周围的同学,他们除了显示出中国人的劣根性(妒忌,排斥)以外,没有长足的进步,真是悲哀。所以说一个中国人是龙,多个中国人是虫,没错的
Top
回复人: gofire(床前太阳光,疑是鸡蛋汤 ( ) 信誉:100 2002-4-25 17:36:30 得分:0
第一个题目的用意不错。
第二个题目我认为只是你没有了解考官的用意。况且,这种题不实用。如果工作中遇到这种需要的话,我编好特定的之后,一定会再编个通用的。
本人到了学计算机图形学的时候才编了我大学的第一个程序(2000多行),原来上C语言实验课的时候一直偷偷打游戏的。感觉要好好反省一下自己的大学生活!
Top
回复人: tonnyue(伊然) ( ) 信誉:100 2002-4-25 17:36:40 得分:0
值得深思!
特别是对于非计算机专业的,没有系统的学习计算机方面的知识,
而只是编一些本专业相关的应用程序,很少考虑优化什么的。
Top
回复人: gofire(床前太阳光,疑是鸡蛋汤 ( ) 信誉:100 2002-4-25 17:41:20 得分:0
编那个程序是没有办法,老师很严格,所以逃不过的。想起来,真的很感谢他!
Top
回复人: kaitty(阿凯) ( ) 信誉:55 2002-4-25 17:58:37 得分:0
我觉得你第一个问题回答太差劲了。
Top
回复人: huiyue01(约会) ( ) 信誉:100 2002-4-25 18:04:38 得分:0
对!我们在思考问题时,应该想一下再回答,别没有经过思考,凭感觉、凭经验就回答。
这样的文章值得我们看和思考!?
Top
回复人: wsa_socket() ( ) 信誉:97 2002-4-25 18:31:23 得分:0
agree with myan() ( )
不能钻牛角尖,
先去做,再做好!这是一个过程!
Top
回复人: sg2008() ( ) 信誉:100 2002-4-25 19:25:13 得分:0
给我的感觉,在VC面前,我不知道该做什么,只知道写写写。。。。至于别的,我很难控制,全是API调用,怎么控制,我有些怀念C/C++,因为一切尽在我掌握中!VC和其他一切的一切API让我恶心,但我还在用VC++,因为他虽然降低了程序执行的效率(如果使用不当),但大大提高了开发的效率。没办法,不过我还是喜欢C/C++。
Top
回复人: newmem(电脑疯了) ( ) 信誉:100 2002-4-25 19:26:17 得分:0
很好的文章,给我很多感想,谢谢!
我都大三了,vc才刚开始,不知该怎么办好。
Top
回复人: sg2008() ( ) 信誉:100 2002-4-25 19:29:21 得分:0
我很赞成myan()的观点。
Top
回复人: 小竹() ( ) 信誉:97 2002-4-25 19:54:42 得分:0
哎,毕业时和你们理想一样,现在搞得什么都不是了!
10天的工作一天写完!还考虑效率,去死吧~只要实现功能就可以了,
用户又看不见代码.
觉得自己每天都在制造垃圾!写的东西自己都懒得看~
哎~
还是不要做程序员了~
Top
回复人: zg_zjw(sodawater) ( ) 信誉:100 2002-4-25 19:56:44 得分:0
我是公司的项目经理,为了项目的需求,公司准备招一批C++程序员,我负责面试,我的题目是很多教程上面的原题,就是求1-100的累积和,在面试中
N个自称C++高手之人(自称读过很多经典C++著作和做个一些项目的人)
只有0个人用的是等差数列,求前N项和公式写的程序,后来,迫不得已招了几
个人进来,
后来问他们,其实他们都并没有把这道题放在心上,觉得比小儿科还小儿科
但为什么比小儿科还小儿科的程序,他们却写得这么不入流??
现在中国有很多正在从事写程序的人,但我所看到过的,没有几个可以
被称之为职业程序员的人。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-25 20:52:20 得分:0
zg_zjw(sodawater)
大哥说的很对,为了提高自己我们必须养成好的编程习惯!
Top
回复人: shines(Othelloing) ( ) 信誉:100 2002-4-25 22:30:33 得分:0
myan()的这句话我赞同:
“胡说了一通,也没什么逻辑。只不过我想告诉大家,你将来获得成功的那个位置,不太可能是你经过面试得到的。别在面试上花太多时间,想想哪些是真正重要的吧。”
虽然我现在没有工作,虽然我没有面试过(几乎),就是以前被CSDN的蒋涛, zdg等人轻松的“面试”了一番:)
重要的是你能做到什么,很多的时候面试只是一道关卡,有时候很松,有时候很严,但重要的还是你后面做的事,那才是证明你的能力的时候。
至于算法,看看这个帖子吧,满有意思的,(广告嫌疑):
http://www.csdn.net/expert/topic/647/647808.xml?temp=.8046686
Top
回复人: vcroad() ( ) 信誉:100 2002-4-26 11:11:45 得分:0
呵,什么时候走到这里来了:)
Top
回复人: wenzuodan(wenzuodan) ( ) 信誉:97 2002-4-26 12:04:28 得分:0
写得好!其实现状就是如此!大部份人写写代码,搞个界面!作点数据处理就行了!很多公司要求搞什么项目,很少的公司要求效率!
Top
回复人: zg_zjw(sodawater) ( ) 信誉:100 2002-4-26 12:23:01 得分:0
很多人以为能把功能实现就不错了,还追求什么效率。
其实,把功能正确的实现只是一个程序员最最基本的要求。
如果连这一点都还有问题的话,哪里还能叫程序员。
应该说职业程序员根本不存在考虑能不能实现的问题(当然,除了高尖端科技
和前沿技术的研究,我只是说成熟的技术)。而是考虑把程序写的好的问题。
如果大多数写程序的人都还停留在考虑实现上的话,那证明,大部分人还处
在业余爱好者的阶段。而中国则还处在软件业比较初级的阶段。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-26 12:26:04 得分:0
zg_zjw(sodawater)
大哥说的极为精辟,我深深赞同!
Top
回复人: zg_zjw(sodawater) ( ) 信誉:100 2002-4-26 12:47:09 得分:0
zaozi(枣子)
枣子兄,过奖,大家互勉,共同进步。不仅为自己,也会中国争口气。
(又在说大话了,人不一定有这个能力,但不能没有这种志气)
Top
回复人: hyc1980(???) ( ) 信誉:100 2002-4-26 13:21:24 得分:0
要靠自己。。。
Top
回复人: goodsong(如风) ( ) 信誉:100 2002-4-26 19:11:13 得分:0
以前看了,没有留言
现在从头到尾看了一下各位留言,有几句话想说。
以前就想说的:
这是一个算法的问题,跟编程语言本身无关的。
解决一个问题,首先要寻找合适的方法,其次才是写程序。
如果我来做可以说一个也不会错,当然我的程序多半第一次不能调试通过:(
现在想说的:
数据结构和算法是做程序员的核心技术,这也是体现一个人与众不同的地方,对于语言多翻手册也就熟了。面试是片面的,但也有积极的一面,如果你觉得是揭了你的短,你大可不必放在心上,以后找工作注意扬才避短就行了,如果你觉得是帮你发现了问题,你以后多多努力即可。
记住:哪怕别人故意为难你,事后口出任何语言对你没有任何好处。正确的认识自己,做好自己就行了。
各人意见不一,因为每个人的想法不一样,实际水平也不一样,有幸看到大家的讨论,很有收获。
Top
回复人: lixuyu(C++) ( ) 信誉:100 2002-4-26 19:13:05 得分:0
好久没看到这种帖子了。反思。。。
Top
回复人: nipusa00100(泥菩萨) ( ) 信誉:100 2002-4-26 19:55:07 得分:0
反思………………………………………………………………
Top
回复人: xxgccw(独孤剑) ( ) 信誉:100 2002-4-26 20:16:19 得分:0
我一无所知...........................................
Top
回复人: maxlu(有业游民) ( ) 信誉:100 2002-4-26 20:52:27 得分:0
留名
Top
回复人: youwanna(游游) ( ) 信誉:100 2002-4-26 21:36:34 得分:0
我是一名二流大学的学生,现在已经大三,也和上面的不少前辈,学长有同感,在学校里确实学不了很多东西,好多人到现在还没装过Win98,唉,现在和我同住一个寝室里的人,有计算机,可是平常就挑挑帝国时代啊,上上网,真正搞学习的没有几个,我是很早就有做程序员的理想,所以一直在努力,可是现在大三了,在学习VC,有时候看到头昏脑胀的,一看到别的大哥说做过什么什么项目啊,真的感觉一事无成,感到很惭愧!唉!
愿意与所有和我拥有同一梦想的人为友!hute@371.net
Top
回复人: quanxiongwei(毛毛熊) ( ) 信誉:100 2002-4-26 21:59:53 得分:0
我是编程业余爱好者
大家共勉!
Top
回复人: eagles125(eagles) ( ) 信誉:100 2002-4-26 22:12:15 得分:0
对于这道题,我认为,既然后面是加,所以N为奇数,故结果更简单。
写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n
long fn(long n)
{
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
return n-(n-1)/2;
}
Top
回复人: happywxj2002(紫俊) ( ) 信誉:100 2002-4-27 11:41:14 得分:0
看完之后,心里很沉痛,不过说得是现状!我们程序员们应该努力,但作为管理人员,我觉得这一点是我们因该牢记的。在现在大谈中印软件的差异的今天我们应该好好反省一下我们自己了!以前有一期《程寻员》杂志里有人谈微软面试大致上一样。我们这一定程度上很落后,但只要我们有毅力,自强不息,希望就会有!
Top
回复人: lvxueliang(lxl) ( ) 信誉:100 2002-4-27 12:47:39 得分:0
身有同感
Top
回复人: ttng(棒棒唐) ( ) 信誉:100 2002-4-27 13:54:25 得分:0
别人叫我程序员.其实我还是一个业余爱好者.
Top
回复人: cyndi(下雨) ( ) 信誉:100 2002-4-27 15:59:55 得分:0
呵呵,这封贴子好长啊!
我想每一个程序员或者大学生看了可能都会有所感想,
我是数学系大二的,可是在学校里学的书本知识基本都是用来应付考试的,
什么算法的优化呀,效率呀,呵呵~那些都得靠你自己的研究,考试是不考的,
你的算法含金量再高阅卷老师也不会给你加份!
不过话说回来,在大学里学不到技术但是学到的是一种经历还有理念。。(这当然也是一种自我安慰的方法哦)
比方说,在数学系读四年的书,我有理由相信我的逻辑思维能力会比一般人强一些啊~~
大家也一样的~如果你是在校大学生就好好读自己的书吧!!
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-27 16:05:50 得分:0
cyndi(下雨)
赞同您的观点
Top
回复人: wonderfog(雾) ( ) 信誉:100 2002-4-27 16:39:35 得分:0
我写程序也喜欢优化,但往往写一个小程序时,也花了很多时间,希望不是浪费。
Top
回复人: tigerfox(混合体) ( ) 信誉:100 2002-4-27 22:58:36 得分:0
从上到下看了一遍觉得大家说得都很有道理,自已需要反思一下。
to zaozi:
要你让我去大面试你的题目我可能只能答到第二个问题,还可能不如你。我们写程序要考虑的问题应该适应要求, 但现在才知道解决问题才的头等的。
Top
回复人: feihong6(蓝天飞鸿) ( ) 信誉:94 2002-4-28 0:35:12 得分:0
你好 myan,看得出来,你很有思想,在这方面也成熟,说的事都是事实,
而且是点子上了,你有联系方式吗,以后多交流呀.
我的QQ:8533582.
EMAIL;madaha8@163.com
Top
回复人: TsaiYee(冷月无声) ( ) 信誉:100 2002-4-28 12:02:14 得分:0
看过上面的所有帖子,深有感触,本人大四,马上要到北京南天工作,在面试的时候南天专门从北京飞了两个技术人员来面试,问的最多的是做过的项目的情况,本人在实验室跟教授做过两个项目,学到不少东西,感觉还可以。个人认为其实面试像这样比较好!
Top
回复人: adamsun(令狐冲) ( ) 信誉:100 2002-4-28 12:58:57 得分:0
雄关漫道真如铁, 而今迈步从头越!
Top
回复人: WUYONG(WY) ( ) 信誉:100 2002-4-28 13:01:30 得分:0
下次告诉你的朋友:千万要给你的孩子找个好学校!
你的老师也太不负责了。
大一老师就讲:软件就是算法和数据结构。这当然是其他前辈高人的话。但是我们老师肯定会判你的答案为59分!不是大学老师,是高中老师!因为这不仅仅是效率的问题,这是数学思维的问题。
小学数学就要求我们写计算过程。如果题目是6*4+3=?,我们告诉老师:是6+6+6+6+3=27。当然结果是对的,但是老师会说你不懂乘法口决!你的计算过程是错误的!(这个比喻还不确切,这个学生应该说是对乘法原理非常熟悉,只是精力旺盛而已!)
你的算法答案是正确的,但是从某种意义上说,计算过程(算法)是错误的。你只有借助于CPU的无止境的运算能力才能达到结果。如果那个n是10000的100000次方,你把全世界计算机拿来,算到下个宇宙产生也算不出来。从这个意义上说,你耗尽了全人类的所有生命时间却不能得到一个别人花1分钟就能得到的结果,这难道不是失败吗?如果这样去做实时系统,当然是渎职!
按理说,你已经深有感触,我不应该再罗嗦。
我只是想告诉其他所有人:让我们关注数学,计算机是数学家发明的。让我们多学点数学,多用数学的思维考虑问题。我们是软件工程师,不要用小学生的智慧写代码。
很多回贴还在斤斤计较于性能的差异,那不是主要的,主要问题在于我们缺乏系统的、专业的数学训练。
eagles125(eagles) 竟然说:“对于这道题,我认为,既然后面是加,所以N为奇数,故结果更简单。”这就只能归罪于他的初等数学老师了!
不晓得好多人会愿意再去学两年数学!
Top
回复人: Nizvoo(瓦匠泥 钟松风 100%投入中) ( ) 信誉:92 2002-4-28 13:25:01 得分:0
面不改色的看完了,出了一身汗
Top
回复人: likevclinux(流浪的小狗) ( ) 信誉:97 2002-4-28 14:31:31 得分:0
myan() 同意你的看法,反感那些人把数学无限拔高!
软件是工程科学!!!!!!!!
Top
回复人: WUYONG(WY) ( ) 信誉:100 2002-4-28 14:45:18 得分:0
likevclinux(流浪的小狗) :
面试不是问题的关键。有了数学没有软件工程也是一团糟。
不过我们得要求自己有专业的数学头脑!
等我们的数学素质比较高了的时候,再去说:光有数学是不行的!!!
我认为我的素质就不怎么样!所以在做数据库体系设计时我请数学专家帮忙。你能帮我吗?
Top
回复人: quchunyu(春雨) ( ) 信誉:100 2002-4-28 15:09:35 得分:0
为什么街道上,下水道通道的盖子都是圆形的?
Top
回复人: Li_Dinosaur(朋友) ( ) 信誉:100 2002-4-28 16:43:05 得分:0
面试问题,好,我最喜欢看的了:)
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-28 19:17:31 得分:0
wuyong(WY)
精辟的语言,不管是效率也好,通用性也好,我们照着那个手册做应该是没有错的,因为那是一个CTO成功的经验!
Top
回复人: guojackey(光棍一条) ( ) 信誉:100 2002-4-28 19:18:00 得分:0
浇一盆水!
如果做嵌入式系统,当然需要这样,但,在P4横行的年代,有必要这样
做吗? 如果印度的程序员都这样做,印度的软件业决不会比中国强太多!
为什么他们的底层源码风格一致,像出自一人所为? 中国的程序员不要
以为自己的代码是多么严密、高效,就自以为多NB,这样只适用于自己
开发的非正式商业软件,作为一个公司,你走了之后,谁能看懂你的程序?
出现问题,再找你维护,还是另一人再开发一套自己的?
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-28 19:28:04 得分:0
guojackey(光棍一条)
软件质量好坏是一个综合的标准,效率什么的也是一部分,不是说重视效率就忽视编程风格,请您好好看看那位CTO的话,他也强调了编程风格!
Top
回复人: guojackey(光棍一条) ( ) 信誉:100 2002-4-28 19:43:49 得分:0
回复人: halcyon(halcyon) ( ) 信誉:100 2002-4-24 19:13:16 得分:0
理解,这就是中国程序员和印度程序员的差距。所以中国程序员顶多是技术高手,不能是软件高手。
Top
回复人: Flyinsh0092() ( ) 信誉:100 2002-4-28 19:54:41 得分:0
你说得确实很有道理,从技术角度来说确实应该如此
但是做产品和做学问是不一样的。技术官考虑很多是从技术角度,但是经理呢,他只要你的产品,没有产品什么也不是了。我认为你不要对自己要求这么高,那样会失去很多的信心,不要急,先做产品,在优化。就这样,先温饱,再是小康。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-28 22:09:10 得分:0
Flyinsh0092()
您说的对,按部就班,循序渐进!
Top
回复人: 10ach(泥鳅) ( ) 信誉:100 2002-4-28 23:21:52 得分:0
呼~一口气读完,感慨良多!我个人认为,注重基础当然没有错,但人的精力有限,不可能面面俱到,只要有自己所长就行了,不可能人人都是软件大师,而用人单位则应该根据自己所需择才! zaozi(枣子)同志在面试中表现出他那灵敏的反应,对那些时间紧任务重的单位则恰到好处,没有什么好计较的
Top
回复人: conquerors(啊权) ( ) 信誉:100 2002-4-29 15:38:41 得分:0
good!
Top
回复人: yan_anny() ( ) 信誉:87 2002-4-29 17:18:01 得分:0
写的真好,我也参加了几次面试,但都没有碰到过这样的题目,感触颇深。我想到了我现在做的毕设,算法实现了,但效率很差,太不应该了。
我认为学计算机的人没有必要考那些考试,太机械的一些东西,我不了解你们说的考试,我们学校有很多人考MCSE,被一个晚上就能考下一科,有什么用呢,当然,真正学的人也有,但那毕竟是少数。
Top
回复人: DewinterWang(逃兵) ( ) 信誉:100 2002-4-29 21:40:17 得分:0
Thank you, I love your Article
Top
回复人: zbstone(心永恒) ( ) 信誉:100 2002-4-29 23:33:27 得分:0
很想说几句自己的看法
不过有时候,语言是无法精确表达我的思维的,当然,也可能是我的水平不够,不管怎么说,看了这个,触动很大^感谢各位的言论,是我有很多思考,希望,各位也是如此
Top
回复人: cooldoghuang() ( ) 信誉:100 2002-4-30 0:21:10 得分:0
回想我当初面试时,一道简单的字符串排序问题,我居然作了几个小时,最后还是没有完全正确,实在是惭愧!算法问题一直是我心中的隐痛,可是工作了,需要学习的东西太多了,算法,这个最基础的东西,反而一直得不到学习,无奈啊。。。
Top
回复人: awanghero(念天地之悠悠,独怆然而悌下!) ( ) 信誉:100 2002-4-30 0:51:57 得分:0
有时候,我也在怀疑水平考试过了对你的编程水平有进步吗?
现在我才明白,它还是很有作用的,它不是那种具体的语言学习所能带来的那种立竿见影的效果,时间长了,它会显示它的作用,通过这次考试,它会逼着你作一次比较全面的复习,令你以后的学习更容易上手!最要命的是,如果你去面试的话,常常会有一些基础常识的考试,它会让你更得心应手的!对于刚毕业的人来说,面试官会认为,通过了这个考试的人至少他在学习上比别人更能学!
个人体会!!!!!!!!!!!!!!!!!!
Top
回复人: JYJA(JJ) ( ) 信誉:100 2002-4-30 10:06:07 得分:0
臭小子:
没想到你小子还有这文采,我对你的景仰之情如滔滔江水连绵不绝,真的很想见到你。你什么时候回来?见面详聊!!!!!!!!!!!!!!!!!!!
Top
回复人: literal(一凡) ( ) 信誉:100 2002-4-30 10:13:11 得分:0
发表一点个人观点。
关于程序本人自认为与之打交道数年,或许有一点想法,
涉及什么样的程序要看你目的来说,
假若,以一个庞大的程序,
硬件资源足够,这是应该首先以程序的可读性,以维护行为首要目标,必要时刻以牺牲性能,
若是小程序,以性能为首要,则运行效率为第一,可读可维护次之。与硬件联系紧密的程序还应该考虑硬件成本,何时现效率。如那位老哥所说定义的数组第二题:float t[2][5]存入{{2!,3!,4!,5!,6!},{5!,6!,7!,8!,9!}}
建议最好改为整形数组,要知道浮点运算效率低,并且支持浮点运算的CPU比不支持的要贵得多
Top
回复人: richincsdn2(我不做大哥很久了) ( ) 信誉:100 2002-4-30 10:41:13 得分:0
计算机不是数学
Top
回复人: white_whan(white) ( ) 信誉:100 2002-4-30 10:50:31 得分:0
怎样应对象微软他们出的那些非编程题,或者说怎样培养这类思维能力。
现在国内企业好像也喜欢出这种题目。有经验的请执教!
Top
回复人: qhq800(清风笑) ( ) 信誉:100 2002-4-30 11:37:46 得分:0
收藏
Top
回复人: knightsj(少君) ( ) 信誉:100 2002-4-30 12:58:35 得分:0
我认为程序员也分很多种的说~~
偏向算法的(比如协议分析,游戏)要求有扎实的基本功,效率第一
偏向应用的(比如管理软件)说实话基本功没必要很扎实,不知道傅立叶
变换也能完成任务的说~
所以还是要明确自己像要什么,再去学习。
Top
回复人: ggg123(骨感) ( ) 信誉:100 2002-4-30 13:54:53 得分:0
中国人的潜力很大,牛皮更大!!!呵呵...但是没人会看上你的潜力。
Top
回复人: zhi_liu6(野战炮) ( ) 信誉:100 2002-4-30 16:55:42 得分:0
看到题目就直觉地想到了解法
看来这么多年的程序设计竞赛没有白参加
Top
回复人: do
ublesword(双剑) ( ) 信誉:100 2002-4-30 17:26:34 得分:0
我觉得很有深度,的确象现在我们编程序,很少考虑它的效率,能够编出来,完成任务就算了事,其实这是件很不负责的事情。我反省!我惭愧!
Top
回复人: wolaiye3(初学者) ( ) 信誉:110 2002-4-30 19:30:15 得分:0
真精彩!看来编程时还得多考虑考虑数学知识的好!
Top
回复人: bulbczc() ( ) 信誉:100 2002-4-30 21:40:41 得分:0
花了很长时间将其看完,一个字,值!
Top
回复人: runrunrun(一条不会游泳の鱼) ( ) 信誉:100 2002-4-30 23:05:27 得分:0
可是很多人对具体的编程及其技巧不屑一顾,言必称软件工程,
即省力又有前途, 唉......
Top
回复人: runrunrun(一条不会游泳の鱼) ( ) 信誉:100 2002-4-30 23:09:54 得分:0
其实第二题你的效率还不是最高,
fn2=n/5!+n/6!+n/7!+n/8!+n/9! 可以写成 fn2=n*(1/5!+1/6!+1/7!+1/8!+1/9!) ,而后面是一个常数,知道了吧
Top
回复人: leisureftso() ( ) 信誉:100 2002-5-1 9:57:01 得分:0
这们老兄提醒了我,我写程序时也很少考虑到效率
Top
回复人: Sun_Jianhua(铁拳) ( ) 信誉:100 2002-5-1 23:16:09 得分:0
你到底是黑鬼还是枣子呀,我看到黑鬼发了这篇贴子。很好。
Top
回复人: hx(乱云山风) ( ) 信誉:107 2002-5-2 0:36:27 得分:0
程序的执行效率,我一直很重视!
但开发项目的效率,更重要。
印度,为什么比我们快,不是因为,他们程序写的好,是管理,管的好。
Top
回复人: forrest_wang(青蛙王子) ( ) 信誉:100 2002-5-2 1:16:36 得分:0
众说纷纭,建议斑竹把它拿出来进行更广泛的讨论!!!
Top
回复人: Linnis(阿惑) ( ) 信誉:100 2002-5-2 2:01:33 得分:0
汗颜呀.......转行吧~~
Top
回复人: wxdzony1982411() ( ) 信誉:100 2002-5-2 3:09:52 得分:0
其实,编制程序本身就涉及到一个不可避免矛盾:运行时间和所需空间。你不可能编出运行时间又短,所需空间又小的程序,我们只能找到二者的最佳平衡点,或者根据具体需要编程。不一定死守一个准则,别忘了现在的拥护要求高着呢——如果用户重视的是运行速度,那么牺牲一点内存空间又有何妨?如果你硬要牺牲速度换取空间,说不定用户100个不满意。
Top
回复人: hxblvc(疯狂终结) ( ) 信誉:100 2002-5-2 10:44:04 得分:0
精髓也!!!
Top
回复人: hzyem(大峡) ( ) 信誉:100 2002-5-2 10:52:26 得分:0
to zaozi:
其实同样一个问题经过时间长、短的思考,结果自然也是不同的,应该明白我的意思吧。。。:)
Top
回复人: xiaotao0432(小涛) ( ) 信誉:100 2002-5-2 10:52:58 得分:0
吸取教训
Top
回复人: happyangelclc(快乐) ( ) 信誉:100 2002-5-2 13:10:02 得分:0
楼主说的:“补考一抓一大把,大把大把的补考费落入了学校的口袋,还说现在的学生素质低!”,真是太对了,,我最欣赏这句话了,,现在99%的学校
一句话,,狗屁!!!!一切往钱看!!!(当然很多老师是很好的)
现在编程序要看对象,追求开发效率还是执行效率要看对象,不能混为一谈
像画画一样,有的画只为了随便看看,所以也只要随便画,粗一点没有关系,有的要给人欣赏,还要流传千古,只好精雕细琢了。不一样的,主要看做那
一方面。
Top
回复人: sky_horse() ( ) 信誉:100 2002-5-2 13:29:19 得分:0
看了一下,觉得你主要是没什么经验,写过两年程序以后,考官提出的解决方法就是你自然会想到,更本就不是什么高难度的算法,只能说是你写程序太少。
Top
回复人: lx_cyh(hi) ( ) 信誉:100 2002-5-2 20:56:02 得分:0
对这主持面试人员的水平我表示怀疑,这种题目是典型的潭好强的子孙,往往没有任何实际意义。他给出的答案也并非最佳,以第二道为例。更黑的做法是
temp=0;
if(flag)
temp=n*(1.0/(2!+3!+4!+5!+6!))/*这个常数也可自己控制编译
器静态生成*/
else
.....
诸位看见没有,效率更高。
不过我没搞清的是,哪个语言支持2!这种写法又支持float类型,这才是我真正怀疑这位先生的原因。如果写成6*5* *1,这样的代码绝对是丑陋的
Top
回复人: stone_ll(石头) ( ) 信誉:100 2002-5-2 21:58:46 得分:0
看了0:30分钟,花了1。00圆,不过,值!!! 看君一席话,胜读十年书呀!!!
Top
回复人: nullhue() ( ) 信誉:100 2002-5-3 12:46:03 得分:0
中国的程序员还处在吃别人吃过的东西的境界
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-5-3 16:48:39 得分:0
声明:枣子不是黑鬼!
Top
回复人: xunknown(未知数) ( ) 信誉:100 2002-5-3 19:02:43 得分:0
同意charmfox(charmfox)!
数学也是编程的必修课!
不要忘记数学是一切的基础!
Top
回复人: kspeng(小二) ( ) 信誉:100 2002-5-3 20:02:11 得分:0
中国的大学教育真应该好好反思一下了,到底是要培养什么样的人?什么都
教,但又什么都只教一点点。本来计算机系应该是以技术为核心的,但看看
身边的同学,在用心编程的又有几个,有的学习很刻苦,但总是跳不出教科
书的圈子,有的成天混日子,有的就一门心思讨好老师,当干部、入党什么
的。我在老师眼里是那种吊二郎当的学生,但我对编程绝对用心,当上机实
验课上那些老师宠儿纷纷来跟我copy代码的时候,当数据结构考试时大家都
想跟我坐到一起的时候,我心里真是既高兴又悲哀。计算机系里有太多滥竽
充数的人,好多人根本就对计算机没兴趣,或者仅有的一点兴趣也仅限于
游戏,之所以读计算机无非是为了找工作容易一点罢了。
Top
回复人: shenjiagang(小申) ( ) 信誉:100 2002-5-3 20:03:57 得分:0
谢谢您的提醒!感慨万千啊!
Top
回复人: VCidiot(tulip) ( ) 信誉:100 2002-5-3 22:03:47 得分:0
zaozi(枣子) 你的文章写的很好,下面是我的一些感受:
一:谈国家和教育
中国人就是一个说得比做的好。说什么到什么时候就能成为世界第一或者第二大国,只能有一定知识人都认为那是不太现实的事情,那美国已经发展了多少年了,靠我们几十年的发展就能超过美国吗?我认为那是不现实的,你们有没有看到中国中西部地区的贫穷落后的现状啊。那里的落后不只是在经济上的落后,更多是在思想上,观念上,同样的问题也摆在中国的面前,比如说教育,中国的教育不单单只人一个希望工程的问题。一个国家整体观念上的落后导致上许多方面的落后。我们现在大学出来的人怎么样的人,我想大家都有自己的认识。学校整天都在谈什么素质教育,我倒要问问学校把我们当成了什么,我进来读书我应该得到什么,我们有什么权利,我们不是学校用来挣钱的工具。!!!!!!!!!!!!!!
二:企业与学校
我认为,现在的企业对我们大学生的要求与学校对我培养完全是不一致的。企业希望我什么都会。最好今天签了,明天就能上班,今天就能拿得出东西来,他们把我们看成天才。而学校呢,他们想把我们变成"idiot",变成他们挣钱的工具,变成一群没有思想的"pig"。我认为我们学生就应该有逃课的权利,老师课上的不好,我应该有权利换老师,因为我是出了钱的,我付出了RMB,我就应该得到我应得到的东西---------》我想要的知识。老师你拿了工资就应该付出劳动,当你的劳动得不到我们要求时,你就应该去提高自己,而不是继续在学校里混下去,那样会害我们一生的,你也不希望你的孩子受到我们的教育。
我从大学里真的不知道学到了什么,在C语言里我只学会了三条语句:for,while 和if(我可能学到的不多,但我认为我的同学学到也差不多)。
在这里我想告诉还是大学生的朋友,如果你想得到什么奖学金之类的,一定要学好课本上东西,如果你做一名程序员的话,只有多看课外书和早点到公司里实习
(就算没有工资也没有关系)
告诉计算机系的同学们,你进了计算机系不就是代表你进了天堂,同样不是计算机系的同学也并不代表你以后就没有机会进入IT业了,什么都要靠自己的。
人生的道路应该是由我们自己来决定的(我相信自己只要坚持就一定会实现自己的梦想:做一名程序员)
三:个人的问题:
我妈让我学到我应该做怎么一个人,做一个好人,做一个有爱心的人,我爷爷让我知道了借了东西一定要还,能不借时尽量不去借,从我爷爷那里我知道了,有些事情我应该自己去做,那是我份内的事。在高中里,我学会做人,懂的了什么叫素质,什么的人才算的上真正的"人",怎么样人才会让别人尊重。在大学里我也常常问自己我学到了什么,但我回答不出来。(可能几年之后,我才会知道我在大学里学到了什么)。在大学里我只懂了一件事,我的兴趣是什么,我将来想做什么,我想做一名程序员。我知道我现在很差,我知道做一名程序员是非常艰苦的事,但我不会为现在的自己而感到后悔,我不会后悔我在大学里的四年时光。就算孤单一生,我也不想放弃做一名程序员的梦想。
虽然我现在在公司里用的PB,但以后(一至二年后)我一定会转向VC这一方面来的,希望以后大家多多帮助。
以上我的看 zaozi(枣子) 文章之后的一点感觉,希望能有机会与大家多交流交流。
Top
回复人: ydzqw(傲云) ( ) 信誉:100 2002-5-3 22:45:58 得分:0
我只是觉得印度的公司都发展起来了,他们现在也到中国来竞争了,CMM别人通过了.但是代码好象没我们好.
以前别人总说用友,金蝶没技术.豪杰技术非常好,但用友与豪杰现在比较会是什么结果呢?
楼主提出的是一个很重要的问题,但好象没重要到这种地步.
孟岩大哥说得不错,我觉得.
呵,以我的观点,经济利益第一.呵呵
Top
回复人: ydzqw(傲云) ( ) 信誉:100 2002-5-3 22:48:39 得分:0
呵,技术永远学不到最好,用点心思在管理这些上面会受益的.
Top
回复人: Reve(仨仁仕) ( ) 信誉:100 2002-5-4 15:17:42 得分:0
程序员真的是我们的最终选择么?
我对程序员的梦想在破灭中……
Top
回复人: David_lee(David) ( ) 信誉:100 2002-5-4 22:23:52 得分:0
不错,所以现在我多数时间在学数学,编程学得少了点
Top
回复人: kayak_zm(捷鱼) ( ) 信誉:100 2002-5-5 0:44:47 得分:0
中国的学校教育就是一陀。。。用不着再评论了,越评论越伤心。。。
我现在想说的是搞软件确实是像楼上几位大侠说的那样,是为用户服务的,
用户要的是软件好用,即操作简单,或者界面漂亮等等表面的东西,可能
早期由于机器配置原因,需要程序员对代码不断的进行优化,但是随着硬
技术的不断进步,机器配置越来越高档,CPU的运算速度越来越快,在这种
情况下,我们应该选择怎样去完善软件功能,减少产生错误的次数等,而
不是对着代码钻牛角尖。当然,如果你的编程技巧越高超,当然对编制更
好的软件有帮助。
所以我觉得,现在的软件工程,应该属于一种概念性的东西,而不是技巧
性的东西。
以上只是愚见,欢迎指教!
email:zhangmin@powerise.com.cn
QQ:7315072
Top
回复人: abcabcabc___(abcabcabc__) ( ) 信誉:100 2002-5-5 2:33:01 得分:0
the questions are rubbish. that guy even do
esnt know what interview for
Top
回复人: snow1_1_1(沉思者) ( ) 信誉:100 2002-5-5 12:28:53 得分:0
看你写的我的感受也很深,那就是当一名程序真的要下很深的功夫。
Top
回复人: mywe() ( ) 信誉:100 2002-5-5 15:29:58 得分:0
哎,我本科毕业后工作,感觉要学得东东很多,所以考了研究生回来,说要好好学习一番,可是,等真得回来,却发现,我不得不总逃课,很多老师根本就是在那里混(我还在一个全国排前10得重点高校里呢),很多东西,我还是得自己去看,所幸得是,看书得时间比工作得时候多多了。
对于程序员应该作得什么,我想我们不能强求,只有等到我们这一代成长起来后,让后一代人,在我们得基础上,走得更远,更高,这些,不是我们一招一日能改变得,正如中国得足球!
立足我们得国情,做好我们得事情,现在我反而觉得我们缺少系统分析员,我在紫光工作得时候,曾经有一个清华得牛人,是我所少见得系统分析师,他写地程序不多,但是,他绝对能指出你程序中潜在地问题
Top
回复人: FlameFox(火狐) ( ) 信誉:100 2002-5-5 15:45:11 得分:0
我现在大三了
记得大一刚开始学C语言的时候,非常的着迷,经常一个晚上坐在电脑前写着洋洋洒洒几千行的代码。效率可能是很低,但是毕竟是在尝试。那个时候写程序真的是种乐趣。
没想到大二学了数据结构后,教的老师只会对我们空谈算法,却也从来没有实践的东西,自己尝试了点去问吧,结果发现老师压根回答不上来,郁闷。
暑假里自己开始学VC,经常遇到问题得不到回答,如果不是找到CSDN,实在是学不下去,因为老师只会套着个MFC让我们click,click,再click,sigh…………
我就读的是重点师范大学的计算机系,但是我希望以后我不要去教别人学编程序,我怕我会继承前辈继续误人子弟…………
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-5-5 16:16:54 得分:0
VCidiot(tulip)
您写的很好,我们网站想转载您的文章,可以吗,请尽快和我联系!
Top
回复人: sasa9613027(flying bird) ( ) 信誉:97 2002-5-5 17:01:53 得分:0
myan是智者,不过一些事情没有开始阶段有些盲目的投入恐怕日后也不会有深刻的理解的
Top
回复人: rampig() ( ) 信誉:100 2002-5-5 17:48:07 得分:0
根本就不是编程的问题,是基础太差了。工科生的数学如此之差,回家扫地吧。and 这里谈的效率仅仅限于一个功能,想过整个系统的吗?效率高就行了?其他呢?回家老老实实看书吧,不要再说什么某某计算机系的比你差了。
Top
回复人: liujiangshan163(羊羔) ( ) 信誉:100 2002-5-6 2:34:17 得分:0
该文章仁者见仁,智者见智。
Top
回复人: lanzhengpeng2(兰征鹏) ( ) 信誉:100 2002-5-6 12:18:37 得分:0
楼主,来做游戏或图象处理吧。在这里你会每天都会神经兮兮的想着效率等等一切你应该想的。呵呵
Top
回复人: fangjun_cn(い无忧つ浪客ゐ) ( ) 信誉:100 2002-5-7 10:09:49 得分:0
精彩!精彩!
看来我得回去打好基础,编程其实不是会几门语言的 事情哦 ,
努力,努力!
Top
回复人: webting_2000(stp) ( ) 信誉:100 2002-5-7 21:16:53 得分:0
我反而认为主考出的题算法不一定优化,计算机里我好象听说除法乘法是比较耗时的。
Top
回复人: coppermine(coppermine) ( ) 信誉:105 2002-5-7 21:24:42 得分:0
有同感
Top
回复人: Lesily(乐子) ( ) 信誉:102 2002-5-8 0:59:52 得分:0
我也是大四的,计算机系的。
实在太长啦!
看完真的有点痛苦!
不过,人嘛,最重要是开心,人生态度要积极、乐观。
还有就是身体好,这个其实最重要。
呵呵!很不好意思,说了些无聊的。
不过,我还是天天跑步,天天写程序。
我很快乐,所以你快乐啊!
Top
回复人: Purpleendurer(Purplenendurer) ( ) 信誉:100 2002-5-8 11:23:03 得分:0
你的经历与《高质量C/C++编程指南》的作者林锐博士去微软研究院应聘的经历有些相似。
值得深思。
Top
回复人: Jway(Jway) ( ) 信誉:100 2002-5-8 12:45:49 得分:0
我今天是首次进这个论坛,没想到能看到这么好的文章。
对于通用计算机的应用程序来说,确实稳定性、可维护性之类的要求要比效率方面高得多,我刚装了一个占用我12G硬盘空间的恐龙。但是对于空间、时间都受到限制的嵌入式应用来说,首先就要求程序的效率高,否则满足不了响应时间、功能方面的要求。
Top
回复人: wyalchemy(透明) ( ) 信誉:100 2002-5-8 13:34:13 得分:0
这的确是一个好帖子。
我想,我们生活的世界是多姿多彩的,个人也有各自在社会中的角色,各个角色又有层次的不同,重要的是真正知道自己的角色和层次,用心去体会你的经历,不必去谢幕“myan是智者”之类的,更不必背上什么“中国的软件事业”之类的“历史重任”。生活和我们的兴趣应该带给我们的是一种愉悦和享受,只要别忘了,你应该对自己的角色和层次负责,责任心和对完美解决问题的追求就是我们该去体会的。
Top
回复人: LuoQS1((大水货)) ( ) 信誉:100 2002-5-8 14:15:51 得分:0
为什么你们好像都是在校生
Top
回复人: chenAxue(西北风) ( ) 信誉:100 2002-5-8 14:54:55 得分:0
自家漫许便便腹,开卷方知未读书.
--前进的路好难
Top
回复人: taopi2001(涛) ( ) 信誉:100 2002-5-8 15:01:09 得分:0
呼,总算看完了,能在这里了解到大家的想法实在是一件愉快的事.
我以前一直是一个人学编程,好痛苦的!看来来CSDN是对的,希望能和大家交朋友.
Top
回复人: zhang_zpz(阿维) ( ) 信誉:100 2002-5-8 15:32:37 得分:0
很好,百花其放,各抒己见!
学习了不少的理论知识。
我现在正在学习C++,希望在VC上面发展。哪位前辈高人给点意见,指点迷津!?谢谢!!
Top
回复人: Torvalds(天涯) ( ) 信誉:100 2002-5-10 13:22:32 得分:0
花咯好长时间才看完,唉,一句话,真的很值得!
现在的计算机系,一想起就头疼!我是大二的学生,大一时就学完咯c,就一直学它,中间也学过perl,javascript、、、但是等到数据结构一上,唉,这就更头疼了,数据结构被他说过后就不叫数据结构咯!这也是当今大学制度于教师不负责的悲哀!
想学c++ 却怕c丢咯!
Top
回复人: Agemo(加米欧) ( ) 信誉:100 2002-5-13 17:35:33 得分:0
成功与否,以至于所有的问题都可以归结为一个问题,那就是:做人问题。
主 题: 关于一些面试的感想,近来看看吧!
作 者: zaozi (枣子)
等 级:
信 誉 值: 97
所属论坛: Visual C++
问题点数: 20
回复次数: 236
发表时间: 2002-4-21 20:55:42
(枣子原创--www.vcroad.net wutao8@263.net)
做为一名大四的学生,我面试过不少的单位,有成功的也有失败的,但是对我来说所有的失败在某种意义上都是一种成功,特别是我下面写的这些,写这篇文章的时候,我已经签了南京的一家软件公司,但是想起今年2月21日我面试苏州台湾的IT公司的经历联想到我们现在
学习编程的一些情况我真的深有感触,这次面试使我深深的体会到了失败但也收获了很多。我要说的将分成三部分,1.是
我面试的具体经过2.是由面试想到的3.现今我应该做的。当然这些话很大程度上是我个人的意见,不可能完全得到大家的赞同,所以
在某些观点上如果哪位朋友觉得跟我的有很大出入,请不要介意,也不要对我攻击,就当我没有说过,欢迎和我联系共同探讨这些问题!我的EMAIL:wutao8@263.net
1.面试经过
大约在年前我接到了台湾瑞晟(Realtek)苏州公司的面试通知,通知我2月21日到苏州工业园区面试,接到面试后的几天我把一些专业
课温习了一遍,特别是C++和数据结构,由于大学几年里,我一直专研这些方面,加上通过了高级程序员的考试,对于一些常用的算法
我差不多也达到了烂熟于胸的地步,当时的感觉是如果问了我这些方面的问题我应该是没有问题的!
21日那天我被安排在4:30面试,由一位技术人员单独给我面试,在问了一些简单的问题之后他给我出了一道编程题目,题目是这样的:
(由于具体面试的题目比较烦琐,我将其核心思想提取出来分解成了两个独立的简单的问题,有可能问题分解的不当,请大家见谅,实际面试了一个的问题但比其复杂很多,而且涉及一些高等数学变换)
1) 写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n
哼,我的心里冷笑一声!没想到这么简单,我有点紧张的心情顿时放松起来!
于是很快我给出我的解法:
long fn(long n)
{
long temp=0;
int i,flag=1;
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
for(i=1;i<=n;i++)
{
temp=temp+flag*i;
flag=(-1)*flag;
}
return temp;
}
搞定!当我用期待的目光看着面试官的时候,他微笑着跟我说,执行结果肯定是没有问题!但当n很大的时候我这个程序执行效率很低,
在嵌入式系统的开发中,程序的运行效率很重要,能让CPU少执行一条指令都是好的,他让我看看这个程序还有什么可以修改的地方,
把程序优化一下!听了这些话,我的心情当时变的有点沉重,没想到他的要求很严格,之后我对程序进行了严格的分析,给出了改进了的方案!
long fn(long n)
{
long temp=0;
int j=1,i=1,flag=1;
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
while(j<=n)
{
temp=temp+i;
i=-i;
i>0?i++:i--;
j++;
}
return temp;
}
虽然我不敢保证我这个算法是最优的,但是比起上一个程序,我将所有涉及到乘法指令的语句改为执行加法指令,既达到要题目的要求而且
运算时间上缩短了很多!而代价仅仅是增加了一个整型变量!但是我现在的信心已经受了一点打击,我将信将疑的看者面试官,他还是微笑着
跟我说:“不错,这个程序确实在效率上有的很大的提高!”我心里一阵暗喜!但他接着说这个程序仍然不能达到他的要求,要我给出更优的
方案!天啊!还有优化!我当时真的有点崩溃了,想了一会后,我请求他给出他的方案!然后他很爽快的给出了他的程序!
long fn(long n)
{
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
if(0==n%2)
return (n/2)*(-1);
else
return (n/2)*(-1)+n;
}
搞笑,当时我目瞪口呆,没想到他是这个意思,这么简单的代码我真的不会写吗,但是我为什么没有往那方面上想呢!他说的没有错,在n很大很大的时候这三个程序运行时间的差别简直是天壤之别!当我刚想开口说点什么的时候,他却先开口了:“不要认为CPU运算速度快就把所有的问题都推给它去做,程序员应该将代码优化再优化,我们自己能做的决不要让CPU做,因为CPU是为用户服务的,不是为我们
程序员服务的!”多么精辟的语言,我已经不想再说什么了!接着是第二个问题:
2). 他要求我用一种技巧性的编程方法来用一个函数实现两个函数的功能n为如:fn1=n/2!+n/3!+n/4!+n/5!+n/6!
fn2=n/5!+n/6!+n/7!+n/8!+n/9! 现在用一个函数fn(int n,int flag)实现,当flag为0时,实现fn1功能,如果flag为1时
实现fn2功能!他的要求还是效率,效率,效率!说实在话,如果我心情好的话我应该能给出一种比较好的算法,但我那时真的没有什么心思
再想了,我在纸上胡乱画了一些诸如6!=6*5!的公式后直截了当的跟他说要他给出他的答案!面试官也没有说什么,给出了他的思路:
定义一个二维数组 float t[2][5]存入{{2!,3!,4!,5!,6!},{5!,6!,7!,8!,9!}}然后给出一个循环:
for(i=0;i<6;i++)
{
temp=temp+n/t[flag];
}
最后得到计算值!呵呵,典型的空间换时间的算法!
这些总共花了50分钟的时间,还有十分钟我就跟他很随意的聊聊天,聊了一些编程以及生活的问题,那时的我已经很放松了,
因为我知道这次面试结果只有一个:失败。5:30的时候面试官要我等通知,于是我离开了他们公司。这就是面试的整个经过!
2.由面试想到的
真的是很失败啊!我记得那天下好大的雨,气温也很低,我边走边想,从5:30一直走到7:30,全身都湿透了,又冷又饿,但是我只是一直走,脑子里面充满了疑惑,我也想让雨把自己淋醒!看到这里有些朋友可能觉得那些面试题目不算什么如果让自己做的话肯定能全部答对,我肯定相信你,因为我从未怀疑过中国程序员的能力,我认为中国有世界上最好的程序员,我也从未认为自己是高手,所以我做不出来不代表中国程序员比台湾或者别的地方的程序员差,所以我就从我的角度,我的所见所想来谈一些感想:
不错全世界都有优秀的程序员,中国也不例外,但是我疑惑的是:到底中国和台湾或者国外的优秀的程序员的比例到底是多少?台湾我不知道,中国100个程序员里有几个是优秀的呢?我根本算不上,从上面的表现就足以说明一切了!是1个?5个?10个?50个?这个数字我不敢乱猜,恐遭网友一顿痛骂,那么我们国内有多少人学习计算机呢?拿我们学校来说,计算机97级4个班,98级5个班,99级10个班,2000级17个班,人多了,老师怎么办?我们学校的做法是让研究生上课,然后呢?补考一抓一大把,大把大把的补考费落入了学校的口袋,还说现在的学生素质低!真是好笑,我都不知道学校这么做是为了什么,为国内培养大量的程序员吗?学生们能真正学到计算机知识吗?好了,我敢讲,在我们学校学习编程学生和优秀程序员(注意我指的是优秀,只会编几个糟烂程序的人算不上)的比例应该是100:0.1
在这种比例下虽然我们中国学习编程的人铺天盖地,但是想想有多少个人能真正为中国软件业发展作出贡献,有多少人能真正写出优秀的程序名扬海外!
我从学习编程以来,不管是自学还是老师指导,从来都是解决问题就好,编出程序来就行,我的疑惑是:我们有真正的强调过程序的效率,程序的质量吗?我们有仔细分析过我们写的东西,看看有没有可以改进的地方,看看有没有简单的方法来达到同样的目的呢?我问心自问,我发现,我从来没有对我写出来的程序进行过优化,最多就是进行详细的测试,然后Debug,但是这就足够了吗?这些天我偶尔发现我曾经写过的一个游戏,那是一年前我刚加入www.vcroad.net做为其中一员时候,感觉应该拿点东西出来,然后花了一个星期的时间写出来的!程序不算复杂,但是用到了不少数据结构的东西,也用到了一些精彩的算法,加上windows的界面和游戏的可玩性,写完后受到了不少好评,我当时真的很佩服自己!但是现在看呢:没有一句注释,好多丑陋的函数名比如:void chushihua(),好多没有必要的变量,可以用简单语句完成工作的我使用华丽的算法,大量使用全局变量.....,说不好听的话,六百多行的程序除了能运行之外就是一陀屎!如果一年前我能听到一些反面意见的话,大概我能早一点觉悟,但是自从原代码在网站发布以来听到的都是赞美之词,没有一个人向我提出程序改进的意见,这又说明了一个什么问题呢?很值得思考啊!
还有一个疑惑是:我们说的和做的真的一样吗?我在学校的时候曾经受学院指派承办过一个计算机大赛,请了一个老师出决赛的题目,主要是一些算法题目,这个老师可能是我上大学以来唯一敬佩的老师了,从程序调试到打分,对于每个程序都仔细分析其时间效率和空间效率,然后综合打分,四十个人的卷子,老师从下午三点一直调试到晚上十点,在有些写的精彩的语句后还加上批注。我真是高兴很遇到这样的老师并且和他做深入的交流,但在事后,却发生了一件不愉快的事,在比赛中获得第二名的学生找到我,说他程序全部调试成功应该给他满分,并且应该得第一,我说不过他,最后调出了他的原程序和第一名的原程序对比,不错,两个程序都运行的很好,这时,那个同学开口了:“我的程序写的十分简捷明了,仅仅数行就完成了题目要求,而他的却写了一大堆,为什么给他的分多过给我的分。”我当时很是气愤,如果不是老师负责的话,那么现在第一名和第二名的位置真的要互调了,拜托,不是程序的行数越少程序的质量就越高,我记得我跟他大谈这方面的道理,最后说服他了!哈哈,但是我,只能说说而已,我不知道还有多少人一样,说起来头头是道,但心里却压根就从未重视过它!
3.我打算做的!
其实那天我想到的远不止上面那么多,但是我不想再说了,因为我猜想看这篇文章的网友大概都有一肚子的感想,一肚子的抱怨,借用这篇文章发泄可不是我想达到的目的,在上面我把自己骂的一文不值也不是妄自菲薄,但是在某些方面我真的做错了,或者说是偏离了正确方向,现在是矫正方向和重整旗鼓的时候了,就象我前面说过的,我相信中国有世界上最好的程序员,我也相信我的水平不会一直保持现状,我现在就收拾起牢骚真正的实干起来!
真的很巧,就写到这里的时候我在网上偶尔发现了这篇手册,我不知道这预示着什么,但是我想如果我照下面这个基本原则一直踏实做下去,我一定会实现我的理想---一名优秀的软件设计师!
(下面这些文字不是我的原创,是我偶尔在网上发现的,我真的很幸运能看到这些,这篇文章也随着下面的文字而结束,我真心的希望您能从这篇文章中得到启发,这篇文章欢迎大家随意转载,您可以不写作者是谁,但是请您写上www.vcroad.net原创,谢谢您的支持)
作者:金蝶中间件公司CTO袁红岗
不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。
1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。
2. 丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。
3. 最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。
4. 不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。
5. 对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。
6. 多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。
7. 良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。
8. 韧性和毅力。这也许是"高手"和一般程序员最大的区别。A good programming is 99 weat and 1?ffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。
这些是我这几年程序员生涯的一点体会,希望能够给大家有所帮助。
回复人: ljp3000(坏坏) ( ) 信誉:100 2002-4-21 21:32:55 得分:0
excellent!
楼主, 好样的。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-21 21:41:37 得分:0
谢谢您的夸奖,我希望我们一起努力!
Top
回复人: chinacyy(野人) ( ) 信誉:100 2002-4-21 21:44:45 得分:0
有一定道理,但我觉得还是要看做那方面的东西了!
Top
回复人: leepiaoping(回首乱山横) ( ) 信誉:100 2002-4-21 21:48:46 得分:0
反思ING
Top
回复人: evilks(傲野) ( ) 信誉:100 2002-4-21 22:03:26 得分:0
写的真棒,我们大家应该好好反思这个问题,这也许就是一个优秀的程序员于普通程序员的关键所在了。
Top
回复人: kingofvc(还是喜欢97) ( ) 信誉:100 2002-4-21 22:06:46 得分:0
我们真的那么糟吗?
好像是的
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-21 22:16:14 得分:0
我希望我这篇文章能带给大家一点收获!也欢迎观点和我不一样的朋友发贴,大家求同存异,探讨一下!
Top
回复人: 2ndboy(丢丢) ( ) 信誉:100 2002-4-21 22:27:14 得分:0
我们学校(算省重点高校)计算机系的学生99%没有写过单个超过500行的程序,更别说别的了!连个交流的人都没有!只好到CSDN !
Top
回复人: mahongxi(烤鸡翅膀)(色摸) ( ) 信誉:95 2002-4-21 23:17:27 得分:0
说实话,我一看到T,我就知道他要考你数学知识.
文章很好,希望你能写出更多感想,大家共免
BTW,你认识和钰鹏吗?他是我朋友,好久没联系了.
Top
回复人: lyoubing(飘在风中的鱼) ( ) 信誉:100 2002-4-21 23:48:35 得分:0
好贴!!!
Top
回复人: steedhorse(晨星) ( ) 信誉:111 2002-4-22 0:43:37 得分:0
收藏。
Top
回复人: dynku(随风来去.cn) ( ) 信誉:100 2002-4-22 1:20:38 得分:0
大部分编程,实际上对算法的要求真的很低,要求的是稳定,可控制,还有就是结构清晰,所以千万不要钻牛角尖
Top
回复人: quanxiongwei(毛毛熊) ( ) 信誉:100 2002-4-22 2:03:14 得分:0
收藏。
Top
回复人: shines(Othelloing) ( ) 信誉:100 2002-4-22 5:14:29 得分:0
阅
Top
回复人: shines(Othelloing) ( ) 信誉:100 2002-4-22 5:25:19 得分:0
如果写成这样,连if 和 %(取模)都省了:)
long fn(long n)
{
if(n<=0)
{
printf("error: n must > 0");
return 1;
}
return (n>>1)*(-1)+(n&1)*n;
}
Top
回复人: danieltang(如烟往事俱忘却,心底无私天地宽...) ( ) 信誉:100 2002-4-22 6:21:15 得分:0
認識自我,挑戰自我,提高自我...
Top
回复人: delphihero(阿蒙(C++)) ( ) 信誉:97 2002-4-22 8:04:13 得分:0
感觉上的学越多,创造力越少
Top
回复人: dirboy_tym(笨小孩) ( ) 信誉:100 2002-4-22 8:07:17 得分:0
简单的问题看出了复杂的东东
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-22 9:17:02 得分:0
mahongxi(烤鸡翅膀)(色摸)
和钰鹏也是我朋友啊,他好象要工作了!最近联系也少了!
再次感谢上面所有朋友能直言自己的看法!
Top
回复人: wu_apple(寂寞高手) ( ) 信誉:100 2002-4-22 9:42:34 得分:0
值得思考!!那些大学老师更应该看看!!
Top
回复人: kboy110(友爱天使) ( ) 信誉:100 2002-4-22 9:44:35 得分:0
zaozi (枣子)
写得好啊!!!!!
看看中国的培养程序员,也算是程序员吗????
我也是一个想成程序员,但是无法成为程序员的想成为程序员的人!!!!!!
谢谢你的文章!!!!!!
写得very good!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
Top
回复人: Knight_T(骑士) ( ) 信誉:107 2002-4-22 9:53:07 得分:0
这是什么,我要泼点冷水。
Top
回复人: scxy(小熊) ( ) 信誉:94 2002-4-22 10:00:32 得分:0
谢谢
Top
回复人: zerone510(仙外有仙) ( ) 信誉:101 2002-4-22 10:07:53 得分:0
有感
Top
回复人: charmfox(charmfox) ( ) 信誉:100 2002-4-22 10:12:51 得分:0
面试官对你其实就是很基本的要求呀!
难道大学里,没有学过数值分析这门课?那里讲的大部分就是要求你写程序之前先要用数学的思想简化算法。主要就是针对效率的问题。
计算机并不是会几个语言就行了,主要的是思想。我认为你学习的时候就忽略了这个问题。
Top
回复人: K_zErRo(蝶影) ( ) 信誉:100 2002-4-22 10:17:50 得分:0
我也是大四的学生,很有感触,反思反思
Top
回复人: macbolo() ( ) 信誉:100 2002-4-22 10:49:59 得分:0
你说得太好那
Top
回复人: Taken(铁拳) ( ) 信誉:100 2002-4-22 11:40:13 得分:0
我只是一个普通菜鸟,但还是想说两句个人感受!
首先要肯定,你的文章让我反思,我告别校园后已经很久没有反复
斟酌自己的程序了,说来真是惭愧。
在计算机刚发展起来的时候,程序的效率与所需要的运行空间几乎
成了评价程序员的标准。我认为现在硬件发展速度很快,不论是CPU
还是内存,性能都在惊人的速度提高,代码的效率与所占空间反而
显得次要了(当然要看哪个级别的程序,系统程序对这些的要求仍
然很高),这种次要是相对于代码的可读性于与重用性的。这对于
制作应用程序来说更为重要。
我想这次面试不能完全算你的失败,只能说经验不足。举例来说,
如果他想通过你的代码来看你的思维过程的话,如果你第一次给的
就是你的文章中他索要的代码,他仍然不会满意。我觉得他所讲的
提高效率也没有什么技巧,无非是用空间换取时间,把需要重复计
算的内容存放起来,这的确也不失为一个不错的方法。但是你不觉
得这样做会使你的代码通用性降低吗?我想就你的水平,如果能准
确把握考官的意思,写的程序是不会有问题的。
以上只是个人见解,请各位赐教!
Top
回复人: shines(Othelloing) ( ) 信誉:100 2002-4-22 15:04:25 得分:0
其实第一题还可以写成这样,更精髓:
long fn(long n)
{
if(n<=0)
{
printf("error: n must > 0");
return 1;
}
if(n&1)
return n/2;
else
return -n/2;
}
比下面的好多了吧,
long fn(long n)
{
if(n<=0)
{
printf("error: n must > 0");
return 1;
}
if(0==n%2)
return (n/2)*(-1);
else
return (n/2)*(-1)+n;
}
我也同意taken(铁拳)的看法,你没有失败,只要你写的程序是正确的就没有
失败,只是没有完全理解他的意思,何况你还优化了一下,不过,即使第二题,
你没有使用空间换时间的方法,也没有必要使用6!=5!*6的递归,呵呵,还有好
多代码通用性强而效率高的方法(相对而言)。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-22 15:30:34 得分:0
charmfox(charmfox)
您说的很对,但是我们学校就是没有开这些课程,
开的都是CIMS,决策支持,信息工程
所以我们的数学基础不好!
回头我一定补上这些课程!
Top
回复人: Hover(翔)(中国鹰派联盟成员) ( ) 信誉:95 2002-4-22 15:32:39 得分:0
...
Top
回复人: Hover(翔)(中国鹰派联盟成员) ( ) 信誉:95 2002-4-22 15:33:13 得分:0
...
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-22 15:36:01 得分:0
还有就是请大家注意,真正的面试题目不是我文章中写的,我只是提取了面试官的思想,简化了很多,由于水平有限,不能把问题模拟的很有深度,我只想借用其思想来说明问题,所以请大家不要再在面试题目上面做文章了!谢谢!
Top
回复人: jaidy(骑士) ( ) 信誉:97 2002-4-22 15:43:34 得分:0
深有感触!
considering...
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-22 15:43:38 得分:0
taken(铁拳)
其实我开始也是您这么想的,但是面试官跟我交谈的时候他强调了他们现在做的是嵌入式系统,如PDA之类的,不是通用的软件!我觉得我当时还是没有那种效率的思想!只是以为他会考察我算法之类的东西!
Top
回复人: chuqianyiding(出前一丁) ( ) 信誉:100 2002-4-22 15:46:09 得分:0
想的很多,却说不上来。
心情很复杂……
Top
回复人: shines(Othelloing) ( ) 信誉:100 2002-4-22 15:51:22 得分:0
纠正一下,上面的错了,
if(n&1)
return n/2;
else
return -n/2;
应该是:
if(n&1)
return (n>>1)+1;
else
return (-n)>>1;
Top
回复人: Hamas(Hamas) ( ) 信誉:100 2002-4-22 16:01:15 得分:0
枣子哥!呵呵!你这文章写的 N 棒哪!我也要放在我的主页(http://hamas.126.com)上让广大网友好好看看!
Top
回复人: shines(Othelloing) ( ) 信誉:100 2002-4-22 16:02:38 得分:0
上面错了,应该是这样:
if(n&1)
return (n>>1)+1;
else
return (-n)>>1;
Top
回复人: secondlf(风) ( ) 信誉:100 2002-4-22 16:05:29 得分:0
多谢,提醒了一个长期被我忽视的地方。
(不过,说实话,给我也不会想到去用二维数组,容易出错。)
Top
回复人: lius_lzc(小刘) ( ) 信誉:100 2002-4-22 16:09:00 得分:0
后继有人啊!!!!!!!!!!!!!!!!!
真正的程序员
Top
回复人: jet_u() ( ) 信誉:100 2002-4-22 16:14:28 得分:0
收场
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-22 16:24:58 得分:0
我想申明一下,现在的帖子是不完全的,可能是给斑竹删掉了,因为后面一部分是引用一为有名程序员的话,如果大家想要看完整的文章话,在
www.vcroad.net
有!谢谢您的支持
Top
回复人: lihua(lihua) ( ) 信誉:97 2002-4-22 16:58:47 得分:0
帮你UP一下,呵呵
Top
回复人: iceheart(冷酷的心) ( ) 信誉:100 2002-4-22 17:20:58 得分:0
对于第二题:
/*
2). 他要求我用一种技巧性的编程方法来用一个函数实现两个函数的功能n为如:fn1=n/2!+n/3!+n/4!+n/5!+n/6!
fn2=n/5!+n/6!+n/7!+n/8!+n/9! 现在用一个函数fn(int n,int flag)实现,当flag为0时,实现fn1功能,如果flag为1时
实现fn2功能!
*/
我认为还应该做些优化工作:
首先合并同类项:
fn1 = n * (1+(1+(1+(1+3)*4)*5)*6)/6!
= n * (517/720);
fn2 = n * (1+(1+(1+(1+6)*7)*8)*9)/9!
= n * (3610/362880);
然后函数可写成:
float fn( int n, int iWhitch)
{
float iTemp;
switch(iWhitch)
{
case 0:
iTemp = 517/720;
return iTemp * n;
case 1:
iTemp = 3610/362880;
return iTemp * n;
default:
...//err break;
}
}
为什么要给CPU增加不必要的负担呢?
Top
回复人: shines(Othelloing) ( ) 信誉:100 2002-4-22 18:13:35 得分:0
呵呵,楼上的不错,www.vcroad.net 打开好像没东西,也许是你们的服务器问题吧
Top
回复人: Taken(铁拳) ( ) 信誉:100 2002-4-22 20:54:02 得分:0
我也打不开,很想拜读阁下的全文
Top
回复人: lihua(lihua) ( ) 信誉:97 2002-4-22 22:52:23 得分:0
在线人数太多的原因吧。。
Top
回复人: shines(Othelloing) ( ) 信誉:100 2002-4-23 4:18:33 得分:0
我把后面的一段贴上来,。。。
真的很巧,就写到这里的时候我在网上偶尔发现了这篇手册,我不知道这预示着什么,但是我想如果我照下面这个基本原则一直踏实做下去,我一定会实现我的理想---一名优秀的软件设计师
(下面这些文字不是我的原创,是我偶尔在网上发现的,我真的很幸运能看到这些,这篇文章也随着下面的文字而结束,我真心的希望您能从这篇文章中得到启发,这篇文章欢迎大家随意转载,您可以不写作者是谁,但是请您写上www.vcroad.net原创,谢谢您的支持)
作者:金蝶中间件公司CTO袁红岗
不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。
1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。
2. 丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。
3. 最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。
4. 不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。
5. 对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。
6. 多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。
7. 良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。
8. 韧性和毅力。这也许是"高手"和一般程序员最大的区别。A good programming is 99 weat and 1?ffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。
这些是我这几年程序员生涯的一点体会,希望能够给大家有所帮助。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-23 10:26:41 得分:0
shines(Othelloing)
十分感谢!
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-23 10:30:56 得分:0
shines(Othelloing)
十分感谢!
Top
回复人: huiqun(huiqun) ( ) 信誉:100 2002-4-23 10:54:55 得分:0
很棒
Top
回复人: huiqun(huiqun) ( ) 信誉:100 2002-4-23 10:56:42 得分:0
有空来信;huiqun0@163.com
Top
回复人: yahooboy(Lostmind) ( ) 信誉:100 2002-4-23 14:15:46 得分:0
楼主,写得不错,努力、奋斗!
E-mail:SingleMemory@etang.com
Top
回复人: lihua(lihua) ( ) 信誉:97 2002-4-23 16:18:21 得分:0
再帮你UP一下。。呵呵。。。
一个无聊人
Top
回复人: Behard(大家都快要精通BCB了吧......) ( ) 信誉:97 2002-4-23 17:42:34 得分:0
我觉得第一道没有做对还是可以原谅的,但是考官已经给了你第二次机会,你还是一样就没有什么好说的了!
Top
回复人: mygodmymy() ( ) 信誉:100 2002-4-23 18:23:56 得分:0
看了大家对第二题的求解
我觉得不太妥当
计算机本来就是方便大家的
为何要我们自己去算6!
如果真要这样,那万一算n*(2!+3!+...+10000!)时,
为了提高所谓的效率,就要自己去算这个常量吗?
而且以我的观点,所谓用二维数组的方法,简直就是无聊
当然了,嵌入式系统实现这种功能时可能要自己去算
但是把它当所谓的好方法就走极端了
呵呵
计算机是轻闲了,我们可要累死了!
Top
回复人: zousky(麻烦) ( ) 信誉:100 2002-4-23 18:24:16 得分:0
拙见:
很多情况是需要根据情况而言的。如果工程很紧张,时间很短,真的不如将优化程序算化的时间多用到程序调试上面。对项目而言,安全、稳定才是真正的第一。本人一点拙见。
Top
回复人: liuquan(liuquan) ( ) 信誉:100 2002-4-23 18:34:09 得分:0
这些问题很简单。
优秀的程序会在不同的场合写出合适的程序。
Top
回复人: cryingboy(哭泣男孩) ( ) 信誉:100 2002-4-23 18:44:51 得分:0
写得太好了!
得好好的反思一下,特别是自己!!
Top
回复人: scy_cd(ClientDataSet) ( ) 信誉:100 2002-4-23 19:04:08 得分:0
写的真好!
Top
回复人: oddes(尊龙) ( ) 信誉:100 2002-4-23 19:06:11 得分:0
非常有趣。
某人小时候碰到 1+2+..+100当时居然懂得用 (1+100)*50的方法做。7、8年后某人来读某学校的时候,学程序写循环,好像也是这么一道题,某人当时非常奇怪,某人还是小学的思维,觉得没有必要用循环,也觉得没有必要用计算机,直接写答案就可以了。
后来某人说服自己用的循环来计算。
于是,越读越... ...。
主要是题海害的,以为世界是死板的,太多的灵性已经没有了。
某人现在的感觉是,能简单有效的方法是最好的方法。
Top
回复人: love4cz(^_^)(丑丑)(^_^) ( ) 信誉:103 2002-4-23 19:06:46 得分:0
看了,真实佩服,好样的(^_^)!
Top
回复人: nice521(愉快人生) ( ) 信誉:100 2002-4-23 19:27:40 得分:0
基础扎实是很重要,但是,在实际的工程中,对问题的深入理解,写出让顾客满意的程序,更重要。
Top
回复人: xiayer(corrs) ( ) 信誉:100 2002-4-23 19:27:57 得分:0
太精彩了,能在这里看到这样的帖子,我的收获好大!在这里,感谢上面发表意见的朋友,祝你成功……也祝福中国的程序员们!
Top
回复人: ysycom(夜风吹雪) ( ) 信誉:100 2002-4-23 20:25:07 得分:0
各位编程高手,我急切需要你们的帮忙,我是一名大三的学生,计算机专业,现在课程不太紧,想学一门实用的语言,在学校里边学的都是那些理论,真不知道将来怎么参加工作,你们能不能给点建议,学vc++,vb,java还是其他的。
谢谢了,祝你我们程序员一切顺利,钱途无量!!
请发到我的信箱ysycom@sina.com 不胜感激!!
枣子,你好,看了你的文章很有感触,你一定要给我点建议呀,谢谢了!!
ysycom@sina.com
Top
回复人: xiaolun(小懒) ( ) 信誉:92 2002-4-23 20:45:34 得分:0
呵呵,还是读数学系好吧!
Top
回复人: amu013(三木十三) ( ) 信誉:100 2002-4-23 21:20:11 得分:0
呵呵,我不是计算机专业的,所以我去应聘搞IT时,他们首先就不给我机会了。难道非要计算机专业才能吃这碗饭吗。还有啊,奉贤各位,不要考什么软件水平考试了,都是官僚主义作风。考不出大家的水平来,而且证书拖半年才发。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-23 21:30:00 得分:0
mygodmymy()
我觉得您的想法是错误的,因为,CPU可以为所有人服务,但归根结底是为用户服务的,它的频率是固定的,如果我们程序员为了图方便省事占用CPU,那么CPU留给用户的时间一定就少了!我觉得面试官的话很对。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-23 21:42:34 得分:0
amu013(三木十三)
我有点赞同您的看法,我也考了水平考试,但是我觉得只要把书看看,编编程一般都能过,我还考了高分,但是我的水平还是没有真的那么高,哈哈,中国人本来就很会考试的!我们都是给学校逼的!
Top
回复人: weikeming(丘丘) ( ) 信誉:100 2002-4-23 22:03:04 得分:0
我本来也想用优化的算法的,
可惜工期不等人.
只能设计一个比较较化的程序框架,
然后填入代码,
然后f10......
老板才不管算法不算法,他只要程序能动,不死,能收到钱.
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-23 22:10:32 得分:0
哈哈,这就是中国软件公司竞争不过外国的原因之一啊!
Top
回复人: voohoo2000(zjj) ( ) 信誉:100 2002-4-23 22:50:03 得分:0
毕业也快一年了,觉得肚子里的东西越来越少
真想回到可爱的大学重去看看那些功课
Top
回复人: twelfth(烦就喝可乐) ( ) 信誉:100 2002-4-23 23:06:19 得分:0
TO mygodmymy()
关于是让CPU累还是人累的问题上,我个人同意让CPU去累的看法。
但是CPU现在并不是很能干,好多问题就算优化了算法在N年之内都算不出来呢!或者比如在游戏编程中,如果不把一些该放到查询表的东西放进去,哈,你就会知道什么叫“龟速”了……
你要怪就怪CPU不够快……希望你出生在下个世纪吧,也许那时侯会好一点:}
Top
回复人: stoneyrh() ( ) 信誉:100 2002-4-23 23:09:07 得分:0
good
值得我学习
Top
回复人: twelfth(烦就喝可乐) ( ) 信誉:100 2002-4-23 23:14:44 得分:0
TO mygodmymy()
补充一点,谁也没有让您自己去算10000!,很多优化方法都可以先把它用计算机先算出来的,然后再存起来,只不过是不要在用户觉得不该慢的时候慢下来就可以了:}
还有一点就是我觉得大部分人编软件是“为人民服务”,所以我觉得这个问题是让用户烦还是自己烦的问题:}
Top
回复人: nettm(阿牧) ( ) 信誉:100 2002-4-24 8:30:50 得分:0
一般来说程序的稳定性、可读性和可重用性是最重要的,效率在其次吧。
Top
回复人: lhbchaor() ( ) 信誉:100 2002-4-24 9:07:23 得分:0
小伙子,如果哪个考试官只是这样考你话,证明他仅仅停留在代码级别的,没有软件系统架构思想,你大可不必去那样的公司,现在软件行业是工程思想 行业思想比程序重要得多。当然这些开发工具你得熟练的,这些东西你在项目实施中才会感觉到的。
Top
回复人: zzhcom(zzhcom) ( ) 信誉:100 2002-4-24 9:11:36 得分:0
其实我觉得阶乘那道题那个考官的解法还不是一样的麻烦,还不是要通过循环来先求阶乘,然后才能够存到内存中去。更谈不上什么空间换时间。
要不然就是它必须自己用手工先计算好那些阶乘,那也太落后了吧!
Top
回复人: boredom_vc(无聊) ( ) 信誉:100 2002-4-24 9:18:08 得分:0
多谢!!
Top
回复人: lchlovely(贝贝) ( ) 信誉:97 2002-4-24 10:56:46 得分:0
靠,大学没毕业,高级程序员都通过了啊。
Top
回复人: webjj(超级笨笨) ( ) 信誉:100 2002-4-24 11:19:06 得分:0
真的写的不错,现在程序员太多太烂!在写完代码之后我们应该进行斟酌!
Top
回复人: yiyiyaya(咿咿呀呀) ( ) 信誉:100 2002-4-24 12:24:48 得分:0
"韧性和毅力。这也许是"高手"和一般程序员最大的区别"
我觉得这一点是最重要的!
我是一个研究生,也是个真正的超级大菜鸟,大学里面能学到什么?完全靠
自己!
凭自己的兴趣爱好做事情、并坚持下去,才能成为出色的人,无论是程序员
还是系统分析员……
现在已经没有勇气来解剖剖析自己了!每天检讨、每天犯错误的日子更没趣。
看到周围既有嘻嘻哈哈混日子的也有勤勤恳恳的人,自己能做什么?定一个不太高的目标,一点点补吧!
Top
回复人: hd506lg(让我们一起来吧) ( ) 信誉:100 2002-4-24 12:45:59 得分:0
good man
Top
回复人: lonelywind(晚风) ( ) 信誉:100 2002-4-24 12:55:12 得分:0
同感啊!
Top
回复人: zz321() ( ) 信誉:100 2002-4-24 15:09:46 得分:0
ai....
Top
回复人: lijiesdhua110(琥珀泪水) ( ) 信誉:100 2002-4-24 15:27:55 得分:0
ai 你好可爱
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-24 17:33:29 得分:0
感谢大家的支持,也感谢所有的朋友提出自己的意见!
我将从我做起,努力奋斗!
Top
回复人: myan() ( ) 信誉:100 2002-4-24 17:40:27 得分:0
如果是一年前,我会很赞成这篇文章的说法。但是现在,我觉得“不尽然”。
首先,我觉得你过于看重在面试中的表现了,也无形中把问题放大了。要知道,考官平时也就是你我一样的程序员,获得考察他人机会的时候,经常会借机大捞心理满足感。于是精心准备一些问题,对你进行突然袭击,问题中必然是有些玄机的,所以在面试的紧张气氛中,一般的人都会中圈套。这种面试根本不可能考察你的真实水平,而且你平时无论多么努力钻研,遇到这些类似智力急转弯的所谓面试,都难保不出问题。反过来,如果你精心准备一些这种问题来问上面那些洋洋自得的考官,多半他们照样也有目瞪口呆以至于恼羞成怒的表现。爱因斯坦曾经在一次普林斯顿的普通物理竞赛里得了个不及格。
现在论坛上有很多标题为“XX公司面试题”之类的帖子,还在学校里的同学一般都会很感兴趣。其实你看那些面试题,大同小异,不是脑筋急转弯,就是用一些所谓心理分析的题目绕十八个弯来分析你的性格等等。说得难听一点,这些东西纯属打着高技术面纱的狗皮膏药,里头科学的成份很少,根本不能作为判断实际人才的标准。某些看上去很朴实的考察,实际上在面试的特殊场合里,也会在一定程度上失去评判的价值。
现在的面试好像就是考察你够不够聪明。中国人对于“聪明”的理解有一些独特的地方,比如我们认为反应快就是聪明,善于解题就是聪明,等等,这直接体现在我们的考试制度里,并且经由考试制度大大强化。实际上编程也好,其他工作也好,创造力、想象力、设计能力、统筹规划能力、对问题的捕捉和把握能力、钻研精神、学习和工作方法等等这些不属于“聪明”范畴的东西,才更为重要。而所有一切中,最最重要的东西,往往不是你的智力,而是你的性格和品质。大家经常谈到比尔盖茨,说他聪明,其实他聪明与否倒在其次,头脑清醒,判断力强,斗志顽强,这些东西才是成功的关键。而我们一说起来,就一句话,他聪明。大家到工作中自然会发现,聪明不聪明,尤其是我们所谓的聪明,根本不重要。
胡说了一通,也没什么逻辑。只不过我想告诉大家,你将来获得成功的那个位置,不太可能是你经过面试得到的。别在面试上花太多时间,想想哪些是真正重要的吧。
Top
回复人: simo(糊涂大虫) ( ) 信誉:89 2002-4-24 17:46:25 得分:0
众说纷纭
Top
回复人: myan() ( ) 信誉:100 2002-4-24 17:49:11 得分:0
补充一句,以考试为指挥棒来学习固然不对,以面试为指挥棒来学习那就简直荒谬。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-24 18:01:02 得分:0
呵呵,不管面试官或他们公司好也好,坏也好,如果我真的强的话,就上面的题目来说是应该作出来的(暂且不论题目出的好坏),原因就是我缺少这方面的锻炼啊,我不是通过什么来指挥学习,我现在是改正错误,纠正方向!我永远需要学习!
Top
回复人: yung(追★族) ( ) 信誉:100 2002-4-24 18:24:37 得分:0
值得深思!
究竟是我们的教育体制的问题还是自身的问题呢?
不能否认的是,现在的中国教育在朝着应试教育的方向越走越远!
Top
回复人: niewq(强强) ( ) 信誉:100 2002-4-24 18:33:29 得分:0
如果你有深厚的物理学与数学知识,回头来学计算机,你会觉得太容易了,太轻松了。
Top
回复人: caishuni() ( ) 信誉:100 2002-4-24 18:41:57 得分:0
To shines(Othelloing):
大哥:我看不懂你写的程序
能不能帮我详细的解释一下
不胜感激.
caishunli@sohu.com
Top
回复人: halcyon(让我们共同进步) ( ) 信誉:100 2002-4-24 19:13:16 得分:0
理解,这就是中国程序员和印度程序员的差距。所以中国程序员顶多是技术高手,不能是软件高手。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-24 20:06:46 得分:0
需要大家一起努力啊!
Top
回复人: itluck() ( ) 信誉:100 2002-4-24 20:26:03 得分:0
我也参加过台湾一家公司的三次面试,公司C语言答卷也全是考有关算法优化与重要关键字的差别。从中可以看出深入研究的重要性,而中国的程序员大都想求大求全,很少能对每行代码进行深入
Top
回复人: SphereEGO() ( ) 信誉:100 2002-4-24 20:30:43 得分:0
同意 shines(Othelloing) 的精辟见解
可是我的看法有一点另类
算法虽然是非常重要,但却取决于你要干什么工作
面试官强调的重点非常明显,是强调代码的执行效率(嵌入式系统)
但是算法并不是全部,如果你做的是普通的软件开发,快速的开发过程和健壮的代码才应该你你面向的重点,当所有工作完成后再在核心运算部分作出适当的算法修正是最好和最正确的。
在一般的开发过程中,如果过分的强调算法,会忽略了开发的方向,加上现在硬件的快速发展,以及技术的不断更新,更应该以技术作为速度的总体因素而不是单独的代码行。
另:
中国的优秀程序员我不知道是多还是少,但是不应该陷入这样的误区:程序员们的能力决定软件的成功与否。
大型软件的成功是有着长时间的积累,有着对技术优缺点精确把握以及对市场的方向正确预测作为决定性因素的。印度就是最好的例子。
再次强调,我也觉得算法是非常重要,那是一切的基础。
Top
回复人: Lovell(拉斐尔) ( ) 信誉:100 2002-4-24 20:37:54 得分:0
我在年前也有一次面试后,在雨里走了两个小时的经历.知道失败了,也察觉到VC++里有些方法和概念我理解的不深,简直是一次承重的打击,我看到了自己的编程能力,与我一直的目的--成为一名优秀的程序员..还差很多,在雨里我洗礼自己......
我不想评论教育太多,大学的教育除了我约束自己学会做人之外,几乎没有什么收获,我很为没有技术的祖国担心,只想学的更多做得更好.很希望与你这样的程序员交流,在你的忧患与奋起中我看到了自己的身影,也感到一种慰籍,我会更坚强地走下去!!
希望大家一起努力!
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-24 20:46:55 得分:0
Lovell(拉斐尔)
愿意交您这样的朋友!
我的QQ:7353105
Top
回复人: myan() ( ) 信誉:100 2002-4-24 21:02:22 得分:0
其实我要说的是,现在所谓面试,做不出来不必大悲,做出来也不必大喜。学技术是为了做事,不是为了考试。如果你以为通过你卧薪尝胆,就可以面对所有面试而从容不迫,那你就大错特错了。比如说,在Win32 API编程方面,我有一点心得,我现在出10个问题,封起来,然后告诉你去学习Win32编程。无论你怎么学习,半年之后,把原来的问题拿出来,估计你还是有多半题目一下子答不上来。题目是无限的,精力是有限的。不要把自己在考试中的表现看得太重要。真到了公司,你不久就知道了,能完成任务的才是牛人。你能不自己动脑子,而接助别人的智力成果作出东西来,那更是牛上牛。
不断学习这是肯定的,精神当然值得赞赏。不过我置疑你的原动力。
你如果真的把精力用在做事上,那么你的第二份工作应该是别的公司给你打电话得到的。如果把精力花在应付面试上,那你就准备不断面试吧。
Top
回复人: wxhcool(沧海) ( ) 信誉:100 2002-4-24 21:15:14 得分:0
是的,很值得我们去深思。告诫我们能时刻有清晰的头脑,对不同的问题,要有不同的解决方案,要有变通的思维。
Top
回复人: myan() ( ) 信誉:100 2002-4-24 21:17:07 得分:0
不过话说回来,基础要扎实。如果你基础不够扎实的话,必然要花时间去补。不过上班以后,确实很困难。
可是基础真正扎实的有几个呢?我一直觉得自己C++不敢说高手,起码C是搞通了。实际上呢?前几天翻了一本书,倍受打击。大家看看下面几个问题:
1. 请大家自己写一个assert宏。95%的人第一次写出来的会是错的,而且不知道错在哪里。
2. 你会用C语言的setjmp和longjmp吗?用这两个函数模拟C++异常机制,保证所有对象在异常发生时获得析构。
3. 什么是heap,什么是free store?
4. 在C89里如何使用不定长结构体?
5. stdargs的使用。
我的意思是,虚心一点准没错,也别以为自己将来能成什么高人。踏实一点,多为你的客户做好服务,这就够了。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-24 21:29:36 得分:0
仁者见仁,智者见智,您说的有一定道理,我虚心接受!
其实我写的文章,跟您的想表达的是一个意思,后面补帖出来一部分也是我想说的,我想您可能是没有看全我的文章,有点误会,在这里我把整篇文章的地址帖出来
http://www.vcroad.net/view.asp?id=844
Top
回复人: myan() ( ) 信誉:100 2002-4-24 21:45:07 得分:0
其实我也不是针对你。跟前面一个网友的感觉一样,中国的应试教育体制害人一辈子,我希望我们能尽早从这个影响中走出来,务实一些。
有机会多交流吧。VC版我很少来,有时间去C++版。
Top
回复人: lele2002(拒绝网恋) ( ) 信誉:100 2002-4-24 22:47:28 得分:0
看不懂,学习ING~
Top
回复人: xiaobinliu(风月神) ( ) 信誉:104 2002-4-25 9:52:37 得分:0
如果你有思想,学而时思之,温故而知新,明确的知道一个方向就好
我大学毕业时,肯定不会你的几个面试题,但是我却通过了同是苏州的
Acer的面试,记得没有什么难度。
不要一味的强调自己需要会什么知识,知识是为人民服务的,如果你能
够掌握驾驭你的知识,而为你服务,开拓你的思维,你就会进步
我也不成功,所写言论也没有权威,大家喜欢的话,就思考思考我说的
不喜欢,就不看好了
Top
回复人: xming076(虚名) ( ) 信誉:100 2002-4-25 9:57:08 得分:0
虽然我已毕业第3年,但还是深有同感,在学校时,教我们计算机的大部分都是其它系留校的少数别的学校本科生,别的本事没有,就会以权谋私,谁和它有过节,谁就不能及格(甚至考通过的)。
一个鸟人出汇编结业试卷,考的时候有两道大题(抄书,然后稍微改一下)有错误,我提出来,那个鸟人还不承认,结果是那两道题我也没做。
类似的情况太多了,唯一一个比较好的老师教组成原理和接口技术的,讲的通俗易懂,其他的太次了。
Top
回复人: xiaobinliu(风月神) ( ) 信誉:104 2002-4-25 9:59:37 得分:0
我也毕业三年
Top
回复人: smlstar(smlstar) ( ) 信誉:100 2002-4-25 10:05:51 得分:0
看了文章我惊出一身冷汗。工作一年了,解决这样的问题我还是有些难度。(可能当初没有打好基础)现在加油还来得及。但是我也认为这是面试方故意搞出的一些东西,难倒别人的同时自己获得满足感。并不是什么项目都会要求算法和效率很高,主要是考虑功能和客户的满意度和易于接受。
也有好多非科班出身的程序员他们做的也很好。
Top
回复人: dynku(随风来去.cn) ( ) 信誉:100 2002-4-25 10:13:04 得分:0
前几天还在关税乐园么
怎么跑到这里来了
说实话,不同的程序开发有不同的需求,每个人也不能样样都精,能够有好的思想,面试不过去有什么关系那,在我接触的项目里头,有重视易用性,有重视开发速度的,有重视稳定性的,要求的不同,必然带来项目管理和程序编制的不同,能灵活面对才是真正的高手
Top
回复人: zhang865(笨秀才) ( ) 信誉:92 2002-4-25 10:25:26 得分:0
我也面试了,可是为什么他就没有问我什么算法的问题,就问我可以看懂MS文档不,我的待遇要求,看了看我的编程时间。
Top
回复人: littlewing() ( ) 信誉:100 2002-4-25 10:41:00 得分:0
这又不是你的错,中国的教育体制就是这样了。曾经有人对中国和外国的小学生考试,是关于手表角度的计算。当时几乎所有的外国小学生都拨自己的手表,而中国的小学生都拿笔。我们这一代人都是这么培养出来的,呵呵,教育的侧重点不一样嘛!
你并不比别人差,一直都是呀!
呵呵,努力吧,我支持你!!
Top
回复人: COOKER(长得很帅,活得很衰) ( ) 信誉:95 2002-4-25 12:44:05 得分:0
凡事没有绝对的,
面试的那个人这样考你,是因为公司搞嵌入式开发,
很重视算法优化和内存的占用,
但如果你搞大型的ERP或其它的一些纯计算机执行的软件的话,
过多的考虑这些就会有些多余.
一个真正的软件设计师,
看重的是对整个系统工程的把握,
而不是局部代码的优化上.
Top
回复人: cui700(cui700) ( ) 信誉:100 2002-4-25 13:09:33 得分:0
真金不怕火炼
别把面试看得太重要
软件的方向也有很多
比如做管理软件开发,就对效率要求弱一些,但也有。
比如我以前的一个同事,她现在已经做研发经理了。反算税款的时候不会用公式求反函数推算,她用循环试算,找出误差小于一元钱的结果,而且对用户宣称最高就能算到这种程度。
再比如她编制了一个计算一个部门几十人的工资的存储过程,运行耗时半个多小时,我用vb写个程序,只用了几秒钟,改成存储过程肯定还能快。
诸如此类的问题可以衡量出很多程序员的水平,目前软件开发中混子很多,做一个项目很久撤不出来的现象很多,但他(她)们还有很多技术以外的方法继续混下去。
能够自省的人,还能有大的进步
按目前中国国情
还是无法较真
尤其做项目
还是难得胡涂呀
Top
回复人: scyangd(自由鸟) ( ) 信誉:100 2002-4-25 14:45:21 得分:0
赞同myan的观点。
还是在稳定性与效率之间找到一个平衡点吧。
Top
回复人: oranges(浮萍) ( ) 信誉:100 2002-4-25 15:08:30 得分:0
我是一名计算机系大四的学生,我在的学校是一个全国重点院校.可是就在这样的学校里,我们班的同学到大四毕设了,才第一次装98或者2000.别的我就不说了.
Top
回复人: tianlinyi(笨蛋) ( ) 信誉:97 2002-4-25 15:17:57 得分:0
我也是一名大四的学生,在南大,我周围的同学也有很多这样的问题,不思进取,看了上面的文章很难过,还好,自己不是这样的人,也曾经劝过周围的同学,他们除了显示出中国人的劣根性(妒忌,排斥)以外,没有长足的进步,真是悲哀。所以说一个中国人是龙,多个中国人是虫,没错的
Top
回复人: gofire(床前太阳光,疑是鸡蛋汤 ( ) 信誉:100 2002-4-25 17:36:30 得分:0
第一个题目的用意不错。
第二个题目我认为只是你没有了解考官的用意。况且,这种题不实用。如果工作中遇到这种需要的话,我编好特定的之后,一定会再编个通用的。
本人到了学计算机图形学的时候才编了我大学的第一个程序(2000多行),原来上C语言实验课的时候一直偷偷打游戏的。感觉要好好反省一下自己的大学生活!
Top
回复人: tonnyue(伊然) ( ) 信誉:100 2002-4-25 17:36:40 得分:0
值得深思!
特别是对于非计算机专业的,没有系统的学习计算机方面的知识,
而只是编一些本专业相关的应用程序,很少考虑优化什么的。
Top
回复人: gofire(床前太阳光,疑是鸡蛋汤 ( ) 信誉:100 2002-4-25 17:41:20 得分:0
编那个程序是没有办法,老师很严格,所以逃不过的。想起来,真的很感谢他!
Top
回复人: kaitty(阿凯) ( ) 信誉:55 2002-4-25 17:58:37 得分:0
我觉得你第一个问题回答太差劲了。
Top
回复人: huiyue01(约会) ( ) 信誉:100 2002-4-25 18:04:38 得分:0
对!我们在思考问题时,应该想一下再回答,别没有经过思考,凭感觉、凭经验就回答。
这样的文章值得我们看和思考!?
Top
回复人: wsa_socket() ( ) 信誉:97 2002-4-25 18:31:23 得分:0
agree with myan() ( )
不能钻牛角尖,
先去做,再做好!这是一个过程!
Top
回复人: sg2008() ( ) 信誉:100 2002-4-25 19:25:13 得分:0
给我的感觉,在VC面前,我不知道该做什么,只知道写写写。。。。至于别的,我很难控制,全是API调用,怎么控制,我有些怀念C/C++,因为一切尽在我掌握中!VC和其他一切的一切API让我恶心,但我还在用VC++,因为他虽然降低了程序执行的效率(如果使用不当),但大大提高了开发的效率。没办法,不过我还是喜欢C/C++。
Top
回复人: newmem(电脑疯了) ( ) 信誉:100 2002-4-25 19:26:17 得分:0
很好的文章,给我很多感想,谢谢!
我都大三了,vc才刚开始,不知该怎么办好。
Top
回复人: sg2008() ( ) 信誉:100 2002-4-25 19:29:21 得分:0
我很赞成myan()的观点。
Top
回复人: 小竹() ( ) 信誉:97 2002-4-25 19:54:42 得分:0
哎,毕业时和你们理想一样,现在搞得什么都不是了!
10天的工作一天写完!还考虑效率,去死吧~只要实现功能就可以了,
用户又看不见代码.
觉得自己每天都在制造垃圾!写的东西自己都懒得看~
哎~
还是不要做程序员了~
Top
回复人: zg_zjw(sodawater) ( ) 信誉:100 2002-4-25 19:56:44 得分:0
我是公司的项目经理,为了项目的需求,公司准备招一批C++程序员,我负责面试,我的题目是很多教程上面的原题,就是求1-100的累积和,在面试中
N个自称C++高手之人(自称读过很多经典C++著作和做个一些项目的人)
只有0个人用的是等差数列,求前N项和公式写的程序,后来,迫不得已招了几
个人进来,
后来问他们,其实他们都并没有把这道题放在心上,觉得比小儿科还小儿科
但为什么比小儿科还小儿科的程序,他们却写得这么不入流??
现在中国有很多正在从事写程序的人,但我所看到过的,没有几个可以
被称之为职业程序员的人。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-25 20:52:20 得分:0
zg_zjw(sodawater)
大哥说的很对,为了提高自己我们必须养成好的编程习惯!
Top
回复人: shines(Othelloing) ( ) 信誉:100 2002-4-25 22:30:33 得分:0
myan()的这句话我赞同:
“胡说了一通,也没什么逻辑。只不过我想告诉大家,你将来获得成功的那个位置,不太可能是你经过面试得到的。别在面试上花太多时间,想想哪些是真正重要的吧。”
虽然我现在没有工作,虽然我没有面试过(几乎),就是以前被CSDN的蒋涛, zdg等人轻松的“面试”了一番:)
重要的是你能做到什么,很多的时候面试只是一道关卡,有时候很松,有时候很严,但重要的还是你后面做的事,那才是证明你的能力的时候。
至于算法,看看这个帖子吧,满有意思的,(广告嫌疑):
http://www.csdn.net/expert/topic/647/647808.xml?temp=.8046686
Top
回复人: vcroad() ( ) 信誉:100 2002-4-26 11:11:45 得分:0
呵,什么时候走到这里来了:)
Top
回复人: wenzuodan(wenzuodan) ( ) 信誉:97 2002-4-26 12:04:28 得分:0
写得好!其实现状就是如此!大部份人写写代码,搞个界面!作点数据处理就行了!很多公司要求搞什么项目,很少的公司要求效率!
Top
回复人: zg_zjw(sodawater) ( ) 信誉:100 2002-4-26 12:23:01 得分:0
很多人以为能把功能实现就不错了,还追求什么效率。
其实,把功能正确的实现只是一个程序员最最基本的要求。
如果连这一点都还有问题的话,哪里还能叫程序员。
应该说职业程序员根本不存在考虑能不能实现的问题(当然,除了高尖端科技
和前沿技术的研究,我只是说成熟的技术)。而是考虑把程序写的好的问题。
如果大多数写程序的人都还停留在考虑实现上的话,那证明,大部分人还处
在业余爱好者的阶段。而中国则还处在软件业比较初级的阶段。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-26 12:26:04 得分:0
zg_zjw(sodawater)
大哥说的极为精辟,我深深赞同!
Top
回复人: zg_zjw(sodawater) ( ) 信誉:100 2002-4-26 12:47:09 得分:0
zaozi(枣子)
枣子兄,过奖,大家互勉,共同进步。不仅为自己,也会中国争口气。
(又在说大话了,人不一定有这个能力,但不能没有这种志气)
Top
回复人: hyc1980(???) ( ) 信誉:100 2002-4-26 13:21:24 得分:0
要靠自己。。。
Top
回复人: goodsong(如风) ( ) 信誉:100 2002-4-26 19:11:13 得分:0
以前看了,没有留言
现在从头到尾看了一下各位留言,有几句话想说。
以前就想说的:
这是一个算法的问题,跟编程语言本身无关的。
解决一个问题,首先要寻找合适的方法,其次才是写程序。
如果我来做可以说一个也不会错,当然我的程序多半第一次不能调试通过:(
现在想说的:
数据结构和算法是做程序员的核心技术,这也是体现一个人与众不同的地方,对于语言多翻手册也就熟了。面试是片面的,但也有积极的一面,如果你觉得是揭了你的短,你大可不必放在心上,以后找工作注意扬才避短就行了,如果你觉得是帮你发现了问题,你以后多多努力即可。
记住:哪怕别人故意为难你,事后口出任何语言对你没有任何好处。正确的认识自己,做好自己就行了。
各人意见不一,因为每个人的想法不一样,实际水平也不一样,有幸看到大家的讨论,很有收获。
Top
回复人: lixuyu(C++) ( ) 信誉:100 2002-4-26 19:13:05 得分:0
好久没看到这种帖子了。反思。。。
Top
回复人: nipusa00100(泥菩萨) ( ) 信誉:100 2002-4-26 19:55:07 得分:0
反思………………………………………………………………
Top
回复人: xxgccw(独孤剑) ( ) 信誉:100 2002-4-26 20:16:19 得分:0
我一无所知...........................................
Top
回复人: maxlu(有业游民) ( ) 信誉:100 2002-4-26 20:52:27 得分:0
留名
Top
回复人: youwanna(游游) ( ) 信誉:100 2002-4-26 21:36:34 得分:0
我是一名二流大学的学生,现在已经大三,也和上面的不少前辈,学长有同感,在学校里确实学不了很多东西,好多人到现在还没装过Win98,唉,现在和我同住一个寝室里的人,有计算机,可是平常就挑挑帝国时代啊,上上网,真正搞学习的没有几个,我是很早就有做程序员的理想,所以一直在努力,可是现在大三了,在学习VC,有时候看到头昏脑胀的,一看到别的大哥说做过什么什么项目啊,真的感觉一事无成,感到很惭愧!唉!
愿意与所有和我拥有同一梦想的人为友!hute@371.net
Top
回复人: quanxiongwei(毛毛熊) ( ) 信誉:100 2002-4-26 21:59:53 得分:0
我是编程业余爱好者
大家共勉!
Top
回复人: eagles125(eagles) ( ) 信誉:100 2002-4-26 22:12:15 得分:0
对于这道题,我认为,既然后面是加,所以N为奇数,故结果更简单。
写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n
long fn(long n)
{
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
return n-(n-1)/2;
}
Top
回复人: happywxj2002(紫俊) ( ) 信誉:100 2002-4-27 11:41:14 得分:0
看完之后,心里很沉痛,不过说得是现状!我们程序员们应该努力,但作为管理人员,我觉得这一点是我们因该牢记的。在现在大谈中印软件的差异的今天我们应该好好反省一下我们自己了!以前有一期《程寻员》杂志里有人谈微软面试大致上一样。我们这一定程度上很落后,但只要我们有毅力,自强不息,希望就会有!
Top
回复人: lvxueliang(lxl) ( ) 信誉:100 2002-4-27 12:47:39 得分:0
身有同感
Top
回复人: ttng(棒棒唐) ( ) 信誉:100 2002-4-27 13:54:25 得分:0
别人叫我程序员.其实我还是一个业余爱好者.
Top
回复人: cyndi(下雨) ( ) 信誉:100 2002-4-27 15:59:55 得分:0
呵呵,这封贴子好长啊!
我想每一个程序员或者大学生看了可能都会有所感想,
我是数学系大二的,可是在学校里学的书本知识基本都是用来应付考试的,
什么算法的优化呀,效率呀,呵呵~那些都得靠你自己的研究,考试是不考的,
你的算法含金量再高阅卷老师也不会给你加份!
不过话说回来,在大学里学不到技术但是学到的是一种经历还有理念。。(这当然也是一种自我安慰的方法哦)
比方说,在数学系读四年的书,我有理由相信我的逻辑思维能力会比一般人强一些啊~~
大家也一样的~如果你是在校大学生就好好读自己的书吧!!
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-27 16:05:50 得分:0
cyndi(下雨)
赞同您的观点
Top
回复人: wonderfog(雾) ( ) 信誉:100 2002-4-27 16:39:35 得分:0
我写程序也喜欢优化,但往往写一个小程序时,也花了很多时间,希望不是浪费。
Top
回复人: tigerfox(混合体) ( ) 信誉:100 2002-4-27 22:58:36 得分:0
从上到下看了一遍觉得大家说得都很有道理,自已需要反思一下。
to zaozi:
要你让我去大面试你的题目我可能只能答到第二个问题,还可能不如你。我们写程序要考虑的问题应该适应要求, 但现在才知道解决问题才的头等的。
Top
回复人: feihong6(蓝天飞鸿) ( ) 信誉:94 2002-4-28 0:35:12 得分:0
你好 myan,看得出来,你很有思想,在这方面也成熟,说的事都是事实,
而且是点子上了,你有联系方式吗,以后多交流呀.
我的QQ:8533582.
EMAIL;madaha8@163.com
Top
回复人: TsaiYee(冷月无声) ( ) 信誉:100 2002-4-28 12:02:14 得分:0
看过上面的所有帖子,深有感触,本人大四,马上要到北京南天工作,在面试的时候南天专门从北京飞了两个技术人员来面试,问的最多的是做过的项目的情况,本人在实验室跟教授做过两个项目,学到不少东西,感觉还可以。个人认为其实面试像这样比较好!
Top
回复人: adamsun(令狐冲) ( ) 信誉:100 2002-4-28 12:58:57 得分:0
雄关漫道真如铁, 而今迈步从头越!
Top
回复人: WUYONG(WY) ( ) 信誉:100 2002-4-28 13:01:30 得分:0
下次告诉你的朋友:千万要给你的孩子找个好学校!
你的老师也太不负责了。
大一老师就讲:软件就是算法和数据结构。这当然是其他前辈高人的话。但是我们老师肯定会判你的答案为59分!不是大学老师,是高中老师!因为这不仅仅是效率的问题,这是数学思维的问题。
小学数学就要求我们写计算过程。如果题目是6*4+3=?,我们告诉老师:是6+6+6+6+3=27。当然结果是对的,但是老师会说你不懂乘法口决!你的计算过程是错误的!(这个比喻还不确切,这个学生应该说是对乘法原理非常熟悉,只是精力旺盛而已!)
你的算法答案是正确的,但是从某种意义上说,计算过程(算法)是错误的。你只有借助于CPU的无止境的运算能力才能达到结果。如果那个n是10000的100000次方,你把全世界计算机拿来,算到下个宇宙产生也算不出来。从这个意义上说,你耗尽了全人类的所有生命时间却不能得到一个别人花1分钟就能得到的结果,这难道不是失败吗?如果这样去做实时系统,当然是渎职!
按理说,你已经深有感触,我不应该再罗嗦。
我只是想告诉其他所有人:让我们关注数学,计算机是数学家发明的。让我们多学点数学,多用数学的思维考虑问题。我们是软件工程师,不要用小学生的智慧写代码。
很多回贴还在斤斤计较于性能的差异,那不是主要的,主要问题在于我们缺乏系统的、专业的数学训练。
eagles125(eagles) 竟然说:“对于这道题,我认为,既然后面是加,所以N为奇数,故结果更简单。”这就只能归罪于他的初等数学老师了!
不晓得好多人会愿意再去学两年数学!
Top
回复人: Nizvoo(瓦匠泥 钟松风 100%投入中) ( ) 信誉:92 2002-4-28 13:25:01 得分:0
面不改色的看完了,出了一身汗
Top
回复人: likevclinux(流浪的小狗) ( ) 信誉:97 2002-4-28 14:31:31 得分:0
myan() 同意你的看法,反感那些人把数学无限拔高!
软件是工程科学!!!!!!!!
Top
回复人: WUYONG(WY) ( ) 信誉:100 2002-4-28 14:45:18 得分:0
likevclinux(流浪的小狗) :
面试不是问题的关键。有了数学没有软件工程也是一团糟。
不过我们得要求自己有专业的数学头脑!
等我们的数学素质比较高了的时候,再去说:光有数学是不行的!!!
我认为我的素质就不怎么样!所以在做数据库体系设计时我请数学专家帮忙。你能帮我吗?
Top
回复人: quchunyu(春雨) ( ) 信誉:100 2002-4-28 15:09:35 得分:0
为什么街道上,下水道通道的盖子都是圆形的?
Top
回复人: Li_Dinosaur(朋友) ( ) 信誉:100 2002-4-28 16:43:05 得分:0
面试问题,好,我最喜欢看的了:)
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-28 19:17:31 得分:0
wuyong(WY)
精辟的语言,不管是效率也好,通用性也好,我们照着那个手册做应该是没有错的,因为那是一个CTO成功的经验!
Top
回复人: guojackey(光棍一条) ( ) 信誉:100 2002-4-28 19:18:00 得分:0
浇一盆水!
如果做嵌入式系统,当然需要这样,但,在P4横行的年代,有必要这样
做吗? 如果印度的程序员都这样做,印度的软件业决不会比中国强太多!
为什么他们的底层源码风格一致,像出自一人所为? 中国的程序员不要
以为自己的代码是多么严密、高效,就自以为多NB,这样只适用于自己
开发的非正式商业软件,作为一个公司,你走了之后,谁能看懂你的程序?
出现问题,再找你维护,还是另一人再开发一套自己的?
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-28 19:28:04 得分:0
guojackey(光棍一条)
软件质量好坏是一个综合的标准,效率什么的也是一部分,不是说重视效率就忽视编程风格,请您好好看看那位CTO的话,他也强调了编程风格!
Top
回复人: guojackey(光棍一条) ( ) 信誉:100 2002-4-28 19:43:49 得分:0
回复人: halcyon(halcyon) ( ) 信誉:100 2002-4-24 19:13:16 得分:0
理解,这就是中国程序员和印度程序员的差距。所以中国程序员顶多是技术高手,不能是软件高手。
Top
回复人: Flyinsh0092() ( ) 信誉:100 2002-4-28 19:54:41 得分:0
你说得确实很有道理,从技术角度来说确实应该如此
但是做产品和做学问是不一样的。技术官考虑很多是从技术角度,但是经理呢,他只要你的产品,没有产品什么也不是了。我认为你不要对自己要求这么高,那样会失去很多的信心,不要急,先做产品,在优化。就这样,先温饱,再是小康。
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-4-28 22:09:10 得分:0
Flyinsh0092()
您说的对,按部就班,循序渐进!
Top
回复人: 10ach(泥鳅) ( ) 信誉:100 2002-4-28 23:21:52 得分:0
呼~一口气读完,感慨良多!我个人认为,注重基础当然没有错,但人的精力有限,不可能面面俱到,只要有自己所长就行了,不可能人人都是软件大师,而用人单位则应该根据自己所需择才! zaozi(枣子)同志在面试中表现出他那灵敏的反应,对那些时间紧任务重的单位则恰到好处,没有什么好计较的
Top
回复人: conquerors(啊权) ( ) 信誉:100 2002-4-29 15:38:41 得分:0
good!
Top
回复人: yan_anny() ( ) 信誉:87 2002-4-29 17:18:01 得分:0
写的真好,我也参加了几次面试,但都没有碰到过这样的题目,感触颇深。我想到了我现在做的毕设,算法实现了,但效率很差,太不应该了。
我认为学计算机的人没有必要考那些考试,太机械的一些东西,我不了解你们说的考试,我们学校有很多人考MCSE,被一个晚上就能考下一科,有什么用呢,当然,真正学的人也有,但那毕竟是少数。
Top
回复人: DewinterWang(逃兵) ( ) 信誉:100 2002-4-29 21:40:17 得分:0
Thank you, I love your Article
Top
回复人: zbstone(心永恒) ( ) 信誉:100 2002-4-29 23:33:27 得分:0
很想说几句自己的看法
不过有时候,语言是无法精确表达我的思维的,当然,也可能是我的水平不够,不管怎么说,看了这个,触动很大^感谢各位的言论,是我有很多思考,希望,各位也是如此
Top
回复人: cooldoghuang() ( ) 信誉:100 2002-4-30 0:21:10 得分:0
回想我当初面试时,一道简单的字符串排序问题,我居然作了几个小时,最后还是没有完全正确,实在是惭愧!算法问题一直是我心中的隐痛,可是工作了,需要学习的东西太多了,算法,这个最基础的东西,反而一直得不到学习,无奈啊。。。
Top
回复人: awanghero(念天地之悠悠,独怆然而悌下!) ( ) 信誉:100 2002-4-30 0:51:57 得分:0
有时候,我也在怀疑水平考试过了对你的编程水平有进步吗?
现在我才明白,它还是很有作用的,它不是那种具体的语言学习所能带来的那种立竿见影的效果,时间长了,它会显示它的作用,通过这次考试,它会逼着你作一次比较全面的复习,令你以后的学习更容易上手!最要命的是,如果你去面试的话,常常会有一些基础常识的考试,它会让你更得心应手的!对于刚毕业的人来说,面试官会认为,通过了这个考试的人至少他在学习上比别人更能学!
个人体会!!!!!!!!!!!!!!!!!!
Top
回复人: JYJA(JJ) ( ) 信誉:100 2002-4-30 10:06:07 得分:0
臭小子:
没想到你小子还有这文采,我对你的景仰之情如滔滔江水连绵不绝,真的很想见到你。你什么时候回来?见面详聊!!!!!!!!!!!!!!!!!!!
Top
回复人: literal(一凡) ( ) 信誉:100 2002-4-30 10:13:11 得分:0
发表一点个人观点。
关于程序本人自认为与之打交道数年,或许有一点想法,
涉及什么样的程序要看你目的来说,
假若,以一个庞大的程序,
硬件资源足够,这是应该首先以程序的可读性,以维护行为首要目标,必要时刻以牺牲性能,
若是小程序,以性能为首要,则运行效率为第一,可读可维护次之。与硬件联系紧密的程序还应该考虑硬件成本,何时现效率。如那位老哥所说定义的数组第二题:float t[2][5]存入{{2!,3!,4!,5!,6!},{5!,6!,7!,8!,9!}}
建议最好改为整形数组,要知道浮点运算效率低,并且支持浮点运算的CPU比不支持的要贵得多
Top
回复人: richincsdn2(我不做大哥很久了) ( ) 信誉:100 2002-4-30 10:41:13 得分:0
计算机不是数学
Top
回复人: white_whan(white) ( ) 信誉:100 2002-4-30 10:50:31 得分:0
怎样应对象微软他们出的那些非编程题,或者说怎样培养这类思维能力。
现在国内企业好像也喜欢出这种题目。有经验的请执教!
Top
回复人: qhq800(清风笑) ( ) 信誉:100 2002-4-30 11:37:46 得分:0
收藏
Top
回复人: knightsj(少君) ( ) 信誉:100 2002-4-30 12:58:35 得分:0
我认为程序员也分很多种的说~~
偏向算法的(比如协议分析,游戏)要求有扎实的基本功,效率第一
偏向应用的(比如管理软件)说实话基本功没必要很扎实,不知道傅立叶
变换也能完成任务的说~
所以还是要明确自己像要什么,再去学习。
Top
回复人: ggg123(骨感) ( ) 信誉:100 2002-4-30 13:54:53 得分:0
中国人的潜力很大,牛皮更大!!!呵呵...但是没人会看上你的潜力。
Top
回复人: zhi_liu6(野战炮) ( ) 信誉:100 2002-4-30 16:55:42 得分:0
看到题目就直觉地想到了解法
看来这么多年的程序设计竞赛没有白参加
Top
回复人: do
ublesword(双剑) ( ) 信誉:100 2002-4-30 17:26:34 得分:0
我觉得很有深度,的确象现在我们编程序,很少考虑它的效率,能够编出来,完成任务就算了事,其实这是件很不负责的事情。我反省!我惭愧!
Top
回复人: wolaiye3(初学者) ( ) 信誉:110 2002-4-30 19:30:15 得分:0
真精彩!看来编程时还得多考虑考虑数学知识的好!
Top
回复人: bulbczc() ( ) 信誉:100 2002-4-30 21:40:41 得分:0
花了很长时间将其看完,一个字,值!
Top
回复人: runrunrun(一条不会游泳の鱼) ( ) 信誉:100 2002-4-30 23:05:27 得分:0
可是很多人对具体的编程及其技巧不屑一顾,言必称软件工程,
即省力又有前途, 唉......
Top
回复人: runrunrun(一条不会游泳の鱼) ( ) 信誉:100 2002-4-30 23:09:54 得分:0
其实第二题你的效率还不是最高,
fn2=n/5!+n/6!+n/7!+n/8!+n/9! 可以写成 fn2=n*(1/5!+1/6!+1/7!+1/8!+1/9!) ,而后面是一个常数,知道了吧
Top
回复人: leisureftso() ( ) 信誉:100 2002-5-1 9:57:01 得分:0
这们老兄提醒了我,我写程序时也很少考虑到效率
Top
回复人: Sun_Jianhua(铁拳) ( ) 信誉:100 2002-5-1 23:16:09 得分:0
你到底是黑鬼还是枣子呀,我看到黑鬼发了这篇贴子。很好。
Top
回复人: hx(乱云山风) ( ) 信誉:107 2002-5-2 0:36:27 得分:0
程序的执行效率,我一直很重视!
但开发项目的效率,更重要。
印度,为什么比我们快,不是因为,他们程序写的好,是管理,管的好。
Top
回复人: forrest_wang(青蛙王子) ( ) 信誉:100 2002-5-2 1:16:36 得分:0
众说纷纭,建议斑竹把它拿出来进行更广泛的讨论!!!
Top
回复人: Linnis(阿惑) ( ) 信誉:100 2002-5-2 2:01:33 得分:0
汗颜呀.......转行吧~~
Top
回复人: wxdzony1982411() ( ) 信誉:100 2002-5-2 3:09:52 得分:0
其实,编制程序本身就涉及到一个不可避免矛盾:运行时间和所需空间。你不可能编出运行时间又短,所需空间又小的程序,我们只能找到二者的最佳平衡点,或者根据具体需要编程。不一定死守一个准则,别忘了现在的拥护要求高着呢——如果用户重视的是运行速度,那么牺牲一点内存空间又有何妨?如果你硬要牺牲速度换取空间,说不定用户100个不满意。
Top
回复人: hxblvc(疯狂终结) ( ) 信誉:100 2002-5-2 10:44:04 得分:0
精髓也!!!
Top
回复人: hzyem(大峡) ( ) 信誉:100 2002-5-2 10:52:26 得分:0
to zaozi:
其实同样一个问题经过时间长、短的思考,结果自然也是不同的,应该明白我的意思吧。。。:)
Top
回复人: xiaotao0432(小涛) ( ) 信誉:100 2002-5-2 10:52:58 得分:0
吸取教训
Top
回复人: happyangelclc(快乐) ( ) 信誉:100 2002-5-2 13:10:02 得分:0
楼主说的:“补考一抓一大把,大把大把的补考费落入了学校的口袋,还说现在的学生素质低!”,真是太对了,,我最欣赏这句话了,,现在99%的学校
一句话,,狗屁!!!!一切往钱看!!!(当然很多老师是很好的)
现在编程序要看对象,追求开发效率还是执行效率要看对象,不能混为一谈
像画画一样,有的画只为了随便看看,所以也只要随便画,粗一点没有关系,有的要给人欣赏,还要流传千古,只好精雕细琢了。不一样的,主要看做那
一方面。
Top
回复人: sky_horse() ( ) 信誉:100 2002-5-2 13:29:19 得分:0
看了一下,觉得你主要是没什么经验,写过两年程序以后,考官提出的解决方法就是你自然会想到,更本就不是什么高难度的算法,只能说是你写程序太少。
Top
回复人: lx_cyh(hi) ( ) 信誉:100 2002-5-2 20:56:02 得分:0
对这主持面试人员的水平我表示怀疑,这种题目是典型的潭好强的子孙,往往没有任何实际意义。他给出的答案也并非最佳,以第二道为例。更黑的做法是
temp=0;
if(flag)
temp=n*(1.0/(2!+3!+4!+5!+6!))/*这个常数也可自己控制编译
器静态生成*/
else
.....
诸位看见没有,效率更高。
不过我没搞清的是,哪个语言支持2!这种写法又支持float类型,这才是我真正怀疑这位先生的原因。如果写成6*5* *1,这样的代码绝对是丑陋的
Top
回复人: stone_ll(石头) ( ) 信誉:100 2002-5-2 21:58:46 得分:0
看了0:30分钟,花了1。00圆,不过,值!!! 看君一席话,胜读十年书呀!!!
Top
回复人: nullhue() ( ) 信誉:100 2002-5-3 12:46:03 得分:0
中国的程序员还处在吃别人吃过的东西的境界
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-5-3 16:48:39 得分:0
声明:枣子不是黑鬼!
Top
回复人: xunknown(未知数) ( ) 信誉:100 2002-5-3 19:02:43 得分:0
同意charmfox(charmfox)!
数学也是编程的必修课!
不要忘记数学是一切的基础!
Top
回复人: kspeng(小二) ( ) 信誉:100 2002-5-3 20:02:11 得分:0
中国的大学教育真应该好好反思一下了,到底是要培养什么样的人?什么都
教,但又什么都只教一点点。本来计算机系应该是以技术为核心的,但看看
身边的同学,在用心编程的又有几个,有的学习很刻苦,但总是跳不出教科
书的圈子,有的成天混日子,有的就一门心思讨好老师,当干部、入党什么
的。我在老师眼里是那种吊二郎当的学生,但我对编程绝对用心,当上机实
验课上那些老师宠儿纷纷来跟我copy代码的时候,当数据结构考试时大家都
想跟我坐到一起的时候,我心里真是既高兴又悲哀。计算机系里有太多滥竽
充数的人,好多人根本就对计算机没兴趣,或者仅有的一点兴趣也仅限于
游戏,之所以读计算机无非是为了找工作容易一点罢了。
Top
回复人: shenjiagang(小申) ( ) 信誉:100 2002-5-3 20:03:57 得分:0
谢谢您的提醒!感慨万千啊!
Top
回复人: VCidiot(tulip) ( ) 信誉:100 2002-5-3 22:03:47 得分:0
zaozi(枣子) 你的文章写的很好,下面是我的一些感受:
一:谈国家和教育
中国人就是一个说得比做的好。说什么到什么时候就能成为世界第一或者第二大国,只能有一定知识人都认为那是不太现实的事情,那美国已经发展了多少年了,靠我们几十年的发展就能超过美国吗?我认为那是不现实的,你们有没有看到中国中西部地区的贫穷落后的现状啊。那里的落后不只是在经济上的落后,更多是在思想上,观念上,同样的问题也摆在中国的面前,比如说教育,中国的教育不单单只人一个希望工程的问题。一个国家整体观念上的落后导致上许多方面的落后。我们现在大学出来的人怎么样的人,我想大家都有自己的认识。学校整天都在谈什么素质教育,我倒要问问学校把我们当成了什么,我进来读书我应该得到什么,我们有什么权利,我们不是学校用来挣钱的工具。!!!!!!!!!!!!!!
二:企业与学校
我认为,现在的企业对我们大学生的要求与学校对我培养完全是不一致的。企业希望我什么都会。最好今天签了,明天就能上班,今天就能拿得出东西来,他们把我们看成天才。而学校呢,他们想把我们变成"idiot",变成他们挣钱的工具,变成一群没有思想的"pig"。我认为我们学生就应该有逃课的权利,老师课上的不好,我应该有权利换老师,因为我是出了钱的,我付出了RMB,我就应该得到我应得到的东西---------》我想要的知识。老师你拿了工资就应该付出劳动,当你的劳动得不到我们要求时,你就应该去提高自己,而不是继续在学校里混下去,那样会害我们一生的,你也不希望你的孩子受到我们的教育。
我从大学里真的不知道学到了什么,在C语言里我只学会了三条语句:for,while 和if(我可能学到的不多,但我认为我的同学学到也差不多)。
在这里我想告诉还是大学生的朋友,如果你想得到什么奖学金之类的,一定要学好课本上东西,如果你做一名程序员的话,只有多看课外书和早点到公司里实习
(就算没有工资也没有关系)
告诉计算机系的同学们,你进了计算机系不就是代表你进了天堂,同样不是计算机系的同学也并不代表你以后就没有机会进入IT业了,什么都要靠自己的。
人生的道路应该是由我们自己来决定的(我相信自己只要坚持就一定会实现自己的梦想:做一名程序员)
三:个人的问题:
我妈让我学到我应该做怎么一个人,做一个好人,做一个有爱心的人,我爷爷让我知道了借了东西一定要还,能不借时尽量不去借,从我爷爷那里我知道了,有些事情我应该自己去做,那是我份内的事。在高中里,我学会做人,懂的了什么叫素质,什么的人才算的上真正的"人",怎么样人才会让别人尊重。在大学里我也常常问自己我学到了什么,但我回答不出来。(可能几年之后,我才会知道我在大学里学到了什么)。在大学里我只懂了一件事,我的兴趣是什么,我将来想做什么,我想做一名程序员。我知道我现在很差,我知道做一名程序员是非常艰苦的事,但我不会为现在的自己而感到后悔,我不会后悔我在大学里的四年时光。就算孤单一生,我也不想放弃做一名程序员的梦想。
虽然我现在在公司里用的PB,但以后(一至二年后)我一定会转向VC这一方面来的,希望以后大家多多帮助。
以上我的看 zaozi(枣子) 文章之后的一点感觉,希望能有机会与大家多交流交流。
Top
回复人: ydzqw(傲云) ( ) 信誉:100 2002-5-3 22:45:58 得分:0
我只是觉得印度的公司都发展起来了,他们现在也到中国来竞争了,CMM别人通过了.但是代码好象没我们好.
以前别人总说用友,金蝶没技术.豪杰技术非常好,但用友与豪杰现在比较会是什么结果呢?
楼主提出的是一个很重要的问题,但好象没重要到这种地步.
孟岩大哥说得不错,我觉得.
呵,以我的观点,经济利益第一.呵呵
Top
回复人: ydzqw(傲云) ( ) 信誉:100 2002-5-3 22:48:39 得分:0
呵,技术永远学不到最好,用点心思在管理这些上面会受益的.
Top
回复人: Reve(仨仁仕) ( ) 信誉:100 2002-5-4 15:17:42 得分:0
程序员真的是我们的最终选择么?
我对程序员的梦想在破灭中……
Top
回复人: David_lee(David) ( ) 信誉:100 2002-5-4 22:23:52 得分:0
不错,所以现在我多数时间在学数学,编程学得少了点
Top
回复人: kayak_zm(捷鱼) ( ) 信誉:100 2002-5-5 0:44:47 得分:0
中国的学校教育就是一陀。。。用不着再评论了,越评论越伤心。。。
我现在想说的是搞软件确实是像楼上几位大侠说的那样,是为用户服务的,
用户要的是软件好用,即操作简单,或者界面漂亮等等表面的东西,可能
早期由于机器配置原因,需要程序员对代码不断的进行优化,但是随着硬
技术的不断进步,机器配置越来越高档,CPU的运算速度越来越快,在这种
情况下,我们应该选择怎样去完善软件功能,减少产生错误的次数等,而
不是对着代码钻牛角尖。当然,如果你的编程技巧越高超,当然对编制更
好的软件有帮助。
所以我觉得,现在的软件工程,应该属于一种概念性的东西,而不是技巧
性的东西。
以上只是愚见,欢迎指教!
email:zhangmin@powerise.com.cn
QQ:7315072
Top
回复人: abcabcabc___(abcabcabc__) ( ) 信誉:100 2002-5-5 2:33:01 得分:0
the questions are rubbish. that guy even do
esnt know what interview for
Top
回复人: snow1_1_1(沉思者) ( ) 信誉:100 2002-5-5 12:28:53 得分:0
看你写的我的感受也很深,那就是当一名程序真的要下很深的功夫。
Top
回复人: mywe() ( ) 信誉:100 2002-5-5 15:29:58 得分:0
哎,我本科毕业后工作,感觉要学得东东很多,所以考了研究生回来,说要好好学习一番,可是,等真得回来,却发现,我不得不总逃课,很多老师根本就是在那里混(我还在一个全国排前10得重点高校里呢),很多东西,我还是得自己去看,所幸得是,看书得时间比工作得时候多多了。
对于程序员应该作得什么,我想我们不能强求,只有等到我们这一代成长起来后,让后一代人,在我们得基础上,走得更远,更高,这些,不是我们一招一日能改变得,正如中国得足球!
立足我们得国情,做好我们得事情,现在我反而觉得我们缺少系统分析员,我在紫光工作得时候,曾经有一个清华得牛人,是我所少见得系统分析师,他写地程序不多,但是,他绝对能指出你程序中潜在地问题
Top
回复人: FlameFox(火狐) ( ) 信誉:100 2002-5-5 15:45:11 得分:0
我现在大三了
记得大一刚开始学C语言的时候,非常的着迷,经常一个晚上坐在电脑前写着洋洋洒洒几千行的代码。效率可能是很低,但是毕竟是在尝试。那个时候写程序真的是种乐趣。
没想到大二学了数据结构后,教的老师只会对我们空谈算法,却也从来没有实践的东西,自己尝试了点去问吧,结果发现老师压根回答不上来,郁闷。
暑假里自己开始学VC,经常遇到问题得不到回答,如果不是找到CSDN,实在是学不下去,因为老师只会套着个MFC让我们click,click,再click,sigh…………
我就读的是重点师范大学的计算机系,但是我希望以后我不要去教别人学编程序,我怕我会继承前辈继续误人子弟…………
Top
回复人: zaozi(枣子) ( ) 信誉:97 2002-5-5 16:16:54 得分:0
VCidiot(tulip)
您写的很好,我们网站想转载您的文章,可以吗,请尽快和我联系!
Top
回复人: sasa9613027(flying bird) ( ) 信誉:97 2002-5-5 17:01:53 得分:0
myan是智者,不过一些事情没有开始阶段有些盲目的投入恐怕日后也不会有深刻的理解的
Top
回复人: rampig() ( ) 信誉:100 2002-5-5 17:48:07 得分:0
根本就不是编程的问题,是基础太差了。工科生的数学如此之差,回家扫地吧。and 这里谈的效率仅仅限于一个功能,想过整个系统的吗?效率高就行了?其他呢?回家老老实实看书吧,不要再说什么某某计算机系的比你差了。
Top
回复人: liujiangshan163(羊羔) ( ) 信誉:100 2002-5-6 2:34:17 得分:0
该文章仁者见仁,智者见智。
Top
回复人: lanzhengpeng2(兰征鹏) ( ) 信誉:100 2002-5-6 12:18:37 得分:0
楼主,来做游戏或图象处理吧。在这里你会每天都会神经兮兮的想着效率等等一切你应该想的。呵呵
Top
回复人: fangjun_cn(い无忧つ浪客ゐ) ( ) 信誉:100 2002-5-7 10:09:49 得分:0
精彩!精彩!
看来我得回去打好基础,编程其实不是会几门语言的 事情哦 ,
努力,努力!
Top
回复人: webting_2000(stp) ( ) 信誉:100 2002-5-7 21:16:53 得分:0
我反而认为主考出的题算法不一定优化,计算机里我好象听说除法乘法是比较耗时的。
Top
回复人: coppermine(coppermine) ( ) 信誉:105 2002-5-7 21:24:42 得分:0
有同感
Top
回复人: Lesily(乐子) ( ) 信誉:102 2002-5-8 0:59:52 得分:0
我也是大四的,计算机系的。
实在太长啦!
看完真的有点痛苦!
不过,人嘛,最重要是开心,人生态度要积极、乐观。
还有就是身体好,这个其实最重要。
呵呵!很不好意思,说了些无聊的。
不过,我还是天天跑步,天天写程序。
我很快乐,所以你快乐啊!
Top
回复人: Purpleendurer(Purplenendurer) ( ) 信誉:100 2002-5-8 11:23:03 得分:0
你的经历与《高质量C/C++编程指南》的作者林锐博士去微软研究院应聘的经历有些相似。
值得深思。
Top
回复人: Jway(Jway) ( ) 信誉:100 2002-5-8 12:45:49 得分:0
我今天是首次进这个论坛,没想到能看到这么好的文章。
对于通用计算机的应用程序来说,确实稳定性、可维护性之类的要求要比效率方面高得多,我刚装了一个占用我12G硬盘空间的恐龙。但是对于空间、时间都受到限制的嵌入式应用来说,首先就要求程序的效率高,否则满足不了响应时间、功能方面的要求。
Top
回复人: wyalchemy(透明) ( ) 信誉:100 2002-5-8 13:34:13 得分:0
这的确是一个好帖子。
我想,我们生活的世界是多姿多彩的,个人也有各自在社会中的角色,各个角色又有层次的不同,重要的是真正知道自己的角色和层次,用心去体会你的经历,不必去谢幕“myan是智者”之类的,更不必背上什么“中国的软件事业”之类的“历史重任”。生活和我们的兴趣应该带给我们的是一种愉悦和享受,只要别忘了,你应该对自己的角色和层次负责,责任心和对完美解决问题的追求就是我们该去体会的。
Top
回复人: LuoQS1((大水货)) ( ) 信誉:100 2002-5-8 14:15:51 得分:0
为什么你们好像都是在校生
Top
回复人: chenAxue(西北风) ( ) 信誉:100 2002-5-8 14:54:55 得分:0
自家漫许便便腹,开卷方知未读书.
--前进的路好难
Top
回复人: taopi2001(涛) ( ) 信誉:100 2002-5-8 15:01:09 得分:0
呼,总算看完了,能在这里了解到大家的想法实在是一件愉快的事.
我以前一直是一个人学编程,好痛苦的!看来来CSDN是对的,希望能和大家交朋友.
Top
回复人: zhang_zpz(阿维) ( ) 信誉:100 2002-5-8 15:32:37 得分:0
很好,百花其放,各抒己见!
学习了不少的理论知识。
我现在正在学习C++,希望在VC上面发展。哪位前辈高人给点意见,指点迷津!?谢谢!!
Top
回复人: Torvalds(天涯) ( ) 信誉:100 2002-5-10 13:22:32 得分:0
花咯好长时间才看完,唉,一句话,真的很值得!
现在的计算机系,一想起就头疼!我是大二的学生,大一时就学完咯c,就一直学它,中间也学过perl,javascript、、、但是等到数据结构一上,唉,这就更头疼了,数据结构被他说过后就不叫数据结构咯!这也是当今大学制度于教师不负责的悲哀!
想学c++ 却怕c丢咯!
Top
回复人: Agemo(加米欧) ( ) 信誉:100 2002-5-13 17:35:33 得分:0
成功与否,以至于所有的问题都可以归结为一个问题,那就是:做人问题。