设为首页 收藏本站
查看: 1257|回复: 0

[经验分享] 华为一道排序题

[复制链接]

尚未签到

发表于 2016-6-6 07:45:26 | 显示全部楼层 |阅读模式
简单一道排序题,考倒多少读书人! ——从华为一道面试题浅谈计算机专业在校大学生该如何学习专业课程,信心百倍挑战就业!

大学生早已不是天之骄子,仅仅是一个普通劳动者。  网上一句顺口溜“本科生象条狗,硕士生满街走,只有博士才能抖一抖”真正恰如其分地说明了这一点。我想许多到深圳求职的,到过宝安北路的深圳人才大市场的大学生朋友会有同感。只要是非休息日,场场爆满,黑压压的人头攒动。就业的残酷性已经到了”学士学士靠边站,硕士硕士中间站,博士博士往前站。听说你是海归派,Hello Hello签合同。“的地步。
  计算机专业的毕业生由于前几年就业形势好,IT整个行业还不错,工资相对高点,所以许多人纷纷转行搞编程。这两年行业不景气,工资大不如前,但搞编程的人还是越来越多,特别是非计算机科班出生的。面对这样的现实,我们计算机专业在校大学生应该怎样调整,迎战就业呢?

在回答这个问题之前,我们还是来看看现在的公司都是怎样招人的。
  现在找工作,建议在网上找。深圳这边效果好的网站是中国人才热线。天天在上面发简历,等着公司打电话要你去面试就行了。如果有公司要你去面试了,基本都是要过关斩将才有机会和人面谈。一般都是一进公司门,前台小姐会很热情地给你一份试卷做(你不要多问,先老老实实做完题吧:)),根本就不给你机会面谈(题目答得好,你才具备资格和人面谈)。做完了,就放到前台那里,回家等电话吧。机会好的话,可能是管人事方面的人跟你聊聊天,比查户口都要严,什么都问。我是觉得有空要多看看政府发言人、影视明星发言人、公司发言人等等这类讲话,多学学他们是怎么回答记者提问的,这样你才能对付那些人力资源的人。呵呵,这是题外话了。
  看到这里,你终于明白,考试还是重要的第一关。都考些啥?我们从华为一道面试题来看看吧!
  原题大意是这样的:
有N个大小不等的自然数(1--N),请将它们由小到大排序。
要求程序算法:时间复杂度为O(n),空间复杂度为O(1)。
(请你做做看,时间20分钟)
  这一题40分(面试试卷总分100分,60分钟完成。)占40%,可以说对面试成绩至关重要,借用高考的一个名词,这是最后“压轴题”。试卷的分布是这样的,3--5个填空题,4个左右名词解释,8个左右选择题(单选、多选混在一起),2个编程题(任选一题,多做按得分少的计入总分)。就整体难度来说不是很大,考的范围相对来说有点大--C语言、数据结构、网络基础、操作系统、软件工程、数据库等等,但都很基础很基础,都是计算机专业必修课。如果基础知识牢固的话,可能40分钟就能做完。
  我上面所说的从这道“压轴题”可窥一斑了。相信许多人在拿到这道题,第一感觉就是很简单嘛,似乎不敢相信会考这么简单的题目!但是,就是这么简单的题目,还真是考倒了许多人,都是大学本科生,学计算机的,有的还是研究生。还真有点“简单一道排序题,考倒多少读书人!”的味道。这是我一个在华为的同学告诉我的,所以可信度应该是很高的。
  如果是平时自己做作业,我相信许多人可能一下子就做出来了。原因我分析有两个:一是平时看题会仔细一些,有足够的时间;二是心理上觉得华为不可能考得这么简单,老想是否有什么“陷阱”,过度紧张,加之考试时间本身也不长,60分钟,估计大多数人花在这题上面的的时间一般也就20~30分钟吧。因此,建议在校期间应加强心理素质的训练,这么多大大小小的考试都经历过了,再考一次又有何妨!
  从这道题出题意图来看,出题者主要是想考面试者的思维是否敏捷清醒、做事是否认真仔细是否善于思考、基本知识掌握程度如何。为什么这么说呢,第一这道题的确不难,就是一般排序。排序的方法在数据结构中讲得实在是太多了,各种各样的选择排序、插入排序、冒泡排序、希尔排序、堆排序、快速排序等等。但是,用心的人就记得它们当中没有一个算法复杂度是O(n),且不说空间复杂度要满足O(1)。第二就是这道题真正的考点就是看你能否想到数组的下标与这N个数存在的关系。这就是考题中的个小玄机。这N个数随你怎么乱序,排好序后就是数组(让下标从1开始)下标为1的元素,里面放的就一定是1,下标为n的元素,里面放的就一定是N。观察出这点,题目就解决了。
  这道题三言两语就分析完了(详细程序见后面)。透过这道题,我来简单说说计算机专业在校大学生该如何学习专业课程。正如你所见,IT有名的公司,考试题目的难度也不过如此。我想只要是想招应届毕业生的公司,他们都不会出很高深的东西来考你。大家都知道,在校是学习基础理论知识的,不是从事研究的,所以他们没有必要那么做。因此,建议多在基础知识方面下工夫,有条件的多做习题、多上机、勤思考,多看看同一个问题其他人是怎么解决的,和你的有什么不同。有精力的人,试着考程序员、高级程序员,这样你有个目标,学习起来可能更来劲,各专业课学起来联系更紧密。
  总之一句话,注重基础知识,有目标的学习,理论结合习题集。
  [一家之言,欢迎有兴趣的朋友一起讨论:)]
*/
  
void sort(int e[], int n)
{
int i;
int t;/*临时变量:空间复杂度O(1)*/
  for (i=1; i<n+1; i++)/*时间复杂度O(n)*/
{
t = e[e];/*下标为e的元素,排序后其值就是e*/
e[e] = e;
e = t;
}
}
  void main()
{
#define MAX 10
int i, a[MAX+1];

printf("Input the number from 1 to %d:\n",MAX);
for (i=1; i<MAX+1; i++)
{
scanf("%d",&a);
}

sort(a,MAX);
  printf("\n====sort over====\n");
for (i=1; i<MAX+1; i++)
{
printf("%d ",a);
}
  printf("\n");
system("pause");
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-226782-1-1.html 上篇帖子: 华为员工魂丧非洲【转发】 下篇帖子: 华为任正非
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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