东陆风华BBS

 找回密码
 注册东陆风华通行证
东陆风华论坛18周年庆(2005.3.28-2023.3.28)东陆风华-云南大学各专业历年考研复试信息汇总帖送人玫瑰手留余香-云南大学历年考研复试信息汇总
东陆风华-云南大学各学院考研QQ群号码
申请东陆风华实名认证免费领取云大考研考博真题如何申请云南大学考研论坛VIP会员?VIP特权?
东陆风华-云南大学各省校友&云南省各地州校友QQ群云南大学呈贡校区图片 &宿舍图片&图片云大 东陆风华送人玫瑰手留余香-云南大学2021年考研复试信息分享
返回列表 发新帖
查看: 1481|回复: 0

学计算机的人必读

[复制链接]

该用户从未签到

发表于 2005-12-5 11:44:00 | 显示全部楼层 |阅读模式

东陆风华帐号全站通用,包括论坛、商城、网络家园等站点,登陆查看更精彩内容

您需要 登录 才可以下载或查看,没有帐号?注册东陆风华通行证

x
<><FONT size=4>真正想当个好程序员的人都应该看看这篇文章[转帖] <BR>做为一名大四的学生,我面试过不少的单位,有成功的也有失败的,但是对我来说所有的失<BR>败 <BR>在某种意义上都是一种成功,特别是我下面写的这些,写这篇文章的时候,我已经签了南<BR>京的 <BR>一家软件公司,但是想起今年2月21日我面试苏州台湾的IT公司的经历联想到我们现在&nbsp;&nbsp;<BR><BR>学习编程的一些情况我真的深有感触,这次面试使我深深的体会到了失败但也收获了很多<BR>。 <BR>我要说的将分成三部分,1.是&nbsp;&nbsp;<BR>我面试的具体经过2.是由面试想到的3.现今我应该做的。当然这些话很大程度上是我个人<BR>的 <BR>意见,不可能完全得到大家的赞同,所以&nbsp;&nbsp;<BR>在某些观点上如果哪位朋友觉得跟我的有很大出入,请不要介意,也不要对我攻击,就当<BR>我 <BR>没有说过,欢迎和我联系共同探讨这些问题!我的EMAIL:wutao8@263.net&nbsp;&nbsp;<BR><BR>1.面试经过&nbsp;&nbsp;<BR>大约在年前我接到了台湾瑞晟(Realtek)苏州公司的面试通知,通知我2月21日到苏州工业<BR>园 <BR>区面试,接到面试后的几天我把一些专业课温习了一遍,特别是C++和数据结构,由于大学<BR>几 <BR>年里,我一直专研这些方面,加上通过了高级程序员的考试,对于一些常用的算法我差不<BR>多也 <BR>达到了烂熟于胸的地步,当时的感觉是如果问了我这些方面的问题我应该是没有问题的!<BR>&nbsp;&nbsp;<BR>21日那天我被安排在4:30面试,由一位技术人员单独给我面试,在问了一些简单的问题之<BR>后 <BR>他给我出了一道编程题目,题目是这样的:&nbsp;&nbsp;<BR>(由于具体面试的题目比较烦琐,我将其核心思想提取出来分解成……(乱码)&nbsp;&nbsp;<BR>1) 写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n&nbsp;&nbsp;<BR>哼,我的心里冷笑一声!没想到这么简单,我有点紧张的心情顿时放松起来!&nbsp;&nbsp;<BR>于是很快我给出我的解法:&nbsp;&nbsp;<BR>long fn(long n)&nbsp;&nbsp;<BR>{&nbsp;&nbsp;<BR>long temp=0;&nbsp;&nbsp;<BR>int i,flag=1;&nbsp;&nbsp;<BR>if(n&lt;=0)&nbsp;&nbsp;<BR>{&nbsp;&nbsp;<BR>printf("error: n must &gt; 0);&nbsp;&nbsp;<BR>exit(1);&nbsp;&nbsp;<BR>}&nbsp;&nbsp;<BR>for(i=1;i&lt;=n;i++)&nbsp;&nbsp;<BR>{&nbsp;&nbsp;<BR>temp=temp+flag*i;&nbsp;&nbsp;<BR>flag=(-1)*flag;&nbsp;&nbsp;<BR>}&nbsp;&nbsp;<BR>return temp;&nbsp;&nbsp;<BR>}&nbsp;&nbsp;<BR>搞定!当我用期待的目光看着面试官的时候,他微笑着跟我说,执行结果肯定是没有问题<BR>! <BR>但当n很大的时候我这个程序执行效率很低,在嵌入式系统的开发中,程序的运行效率很重<BR>要 <BR>,能让CPU少执行一条指令都是好的,他让我看看这个程序还有什么可以修改的地方,把程<BR>序 <BR>优化一下!听了这些话,我的心情当时变的有点沉重,没想到他的要求很严格,之后我对<BR>程序 <BR>进行了严格的分析,给出了改进了的方案!&nbsp;&nbsp;<BR>long fn(long n)&nbsp;&nbsp;<BR>{&nbsp;&nbsp;<BR>long temp=0;&nbsp;&nbsp;<BR>int j=1,i=1,flag=1;&nbsp;&nbsp;<BR>if(n&lt;=0)&nbsp;&nbsp;<BR>{&nbsp;&nbsp;<BR>printf("error: n must &gt; 0);&nbsp;&nbsp;<BR>exit(1);&nbsp;&nbsp;<BR>}&nbsp;&nbsp;<BR>while(j&lt;=n)&nbsp;&nbsp;<BR>{&nbsp;&nbsp;<BR>temp=temp+i;&nbsp;&nbsp;<BR>i=-i;&nbsp;&nbsp;<BR>i&gt;0?i++:i--;&nbsp;&nbsp;<BR>j++;&nbsp;&nbsp;<BR>}&nbsp;&nbsp;<BR>return temp;&nbsp;&nbsp;<BR>}&nbsp;&nbsp;<BR>虽然我不敢保证我这个算法是最优的,但是比起上一个程序,我将所有涉及到乘法指令的<BR>语 <BR>句改为执行加法指令,既达到要题目的要求而且运算时间上缩短了很多!而代价仅仅是增<BR>加了 <BR>一个整型变量!但是我现在的信心已经受了一点打击,我将信将疑的看者面试官,他还是<BR>微笑 <BR>着跟我说:“不错,这个程序确实在效率上有的很大的提高!”我心里一阵暗喜!但他接<BR>着说 <BR>这个程序仍然不能达到他的要求,要我给出更优的方案!天啊!还有优化!我当时真的有<BR>点崩 <BR>溃了,想了一会后,我请求他给出他的方案!然后他很爽快的给出了他的程序!&nbsp;&nbsp;<BR>long fn(long n)&nbsp;&nbsp;<BR>{&nbsp;&nbsp;<BR>if(n&lt;=0)&nbsp;&nbsp;<BR>{&nbsp;&nbsp;<BR>printf("error: n must &gt; 0);&nbsp;&nbsp;<BR>exit(1);&nbsp;&nbsp;<BR>}&nbsp;&nbsp;<BR>if(0==n%2)&nbsp;&nbsp;<BR>return (n/2)*(-1);&nbsp;&nbsp;<BR>else&nbsp;&nbsp;<BR>return (n/2)*(-1)+n;&nbsp;&nbsp;<BR>}&nbsp;&nbsp;<BR><BR>搞笑,当时我目瞪口呆,没想到他是这个意思,这么简单的代码我真的不会写吗,但是我<BR>为 <BR>什么没有往那方面上想呢!他说的没有错,在n很大很大的时候这三个程序运行时间的差别<BR>简 <BR>直是天壤之别!当我刚想开口说点什么的时候,他却先开口了:“不要认为CPU运算速度快<BR>就 <BR>把所有的问题都推给它去做,程序员应该将代码优化再优化,我们自己能做的决不要让CP<B
东陆风华APP客户端 http://bbs.ynutx.net/appbyme_app-download.html

本版积分规则

关闭

站长推荐上一条 /2 下一条

QQ|小黑屋|手机版|Archiver|东陆风华,凝聚云大人的力量 ( 滇ICP备07500061号-1 )

GMT+8, 2024-9-28 07:33 , Processed in 1.125000 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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