校招笔试题的疑惑及建议,希望对从事互联网的同学有助

 标  题: 校招笔试题的疑惑及建议,希望对从事互联网的同学有助(补)
发信站: 北邮人论坛 (Mon Sep 19 13:39:42 2011), 站内 
 http://bbs.byr.cn/wForum/disparticle.php?boardName=Job&ID=1024012&pos=12


本人研三,做的全是WEB和软件,目前找工作中,参加过一些社招和校招,有一些项目经验,个人对现在的校园招聘的笔试题目不是很理解,说说我的看法,轻怕,个人较熟.NET和PHP,以这两个举例。
首先,排序算法问题,现在的不少的IT企业笔试题都是算法为主,尤其以排序算法为主,跟风微软这些公司,不可否认这些算法在计算机程序中的重要性,但是目前常见的排序算法在高级语言里都有了很好的实现或者底层C等也有了很好的引用文件,只要知道那种效率高以及什么时候用那一种就行了,完全没有必要考这些算法的实现甚至变种,个人觉得对于大多数公司(非微软等)来说,考这些还不如考高级语言中的排序函数,不要认为这很简单,能完整的说出函数的名字,参数个数,参数类型,或者当数组是数字、字母混杂以及多维数组时结果如何,真不是一件简单事。
第二、大数据处理的变种算法问题,这类问题现在都被问的发霉了,无非是大数据量,选取TopN问题,只要参加过一两场笔试的人都知道这个问题这么做,堆排或快排限制组数法,一些小套子无非也是数据量过大,不能完全读进内存等。这类问题无非是分组,排序,归并的问题,不知企业把这个当做传家宝似的一年接一年考还能区别除学生的什么能力。个人觉得能涉及这个问题的企业都是含有海量数据的企业,上边的这个解法对他们来说没有任何意义,考这还不如考一些Hadloop实在,现在企业的海量非结构化数据基本都是交个这个处理。
第三、数据存储问题,大企业除外,我就不明白一些中小企业为什么非要考B-树这东西,莫非他们要开发自己的RDBMS,对于大型企业的许多数据,也是固化在关系数据库中,对于IT企业,有个不要造轮子的说法,所以觉得上述问题还不如考关系数据库的设计和索引如何使用更适合,对一些大数据量结构化数据的企业,还不如考水平分\库、垂直分、哈希分以及范围分,对一些数据一致性要求高的企业,还不如考些数据库事务、表锁定于行锁定,悲观锁以及乐观锁。如果一些企业有额外要求,还不如加一个NOSQL数据库。
第四、所考知识和职位完全是两码事,有些公司的.NET社招职位把考察重点放在算法、指针和内存上,而把.NET中的常见函数,类库、泛型、接口的使用视而不见,若想招些水平稍高的,能够熟练的引用委托、事件、多线程等技术,若还能够清楚的了解CLR以及.NET的各种类库的继承关系以及有些类重写,我个人觉得他就是.NET高手了,考指针和内存的去招C语言吧。还有公司招WEB前端,竟然问KMP算法以及程序时间复杂度的问题,我不知道能很快正确无误的写出KMP的人对这个职位有什么用处,比能熟练解决CSS的浏览器兼容性,能够熟练地面向对象的开发js程序的人有什么优势。
个人参加过一些小公司的技术面试,和那种技术面试官交流两句,就打消我去这种公司的念头,在那种都搞不清要那种技术人员的公司做技术还有什么前途。
从个人做过一些项目(主要是WEB)的经验、参加的面试、看各种社会招聘需求,以及两年多来坚持看博客园的感受,觉得要是干WEB开发这种行业(除过那种追求高效率开发CGI企业),要具备以下的技能。
做前端的(非设计),HTML/CSS要滚瓜熟烂,这个不熟就别去了,给一个记事本,就能手写CSS和HTML实现各种常见的三栏/两栏式布局,能够解决浏览器常见的css兼容性问题(不说全部了,这个太难),了解HTML5,熟悉js,能够实现现在常见的js效果(下拉式导航,动态相册以及表单验证这些最基本的),熟悉Ajax,会调试Ajax并解决相应的问题,去一些中小企业,得学一门js框架,个人推荐Jquery。
做开发的,得对一门开发技术十分熟练,一般有JSP/PHP/ASP.NET/Ruby和Python,个人主攻的是ASP.NET和PHP夹杂的学了些Ruby On Rails,发现校招要的最多还是JSP,ASP.NET没见要过,虽然PHP是国内开发用的最多的语言,至于后两者,国内用的比较少,个人只知道豆瓣用的是Python,但是这两个脚本语言很方便,写一些小工具以及测试脚本都很方便,至于选择那一个,个人觉得ROR更适合快速上手和建站,Python有google等巨头撑腰,开发技术一般熟练一种就好。
熟悉一个关系数据库,熟悉基本的SQL,能对查询做简单优化。
此外,要上升一步的,设计模式、软件架构这种东西必须得知道些,会用点,知道三层架构是什么玩意,知道什么时候多加一层多个服务层,知道ORM并用过,能写一个简单的ORM,会写存储过程,知道触发器怎么用;还知道现在不同开发技术下的MVC框架,会用,再高一点,自己写一个MVC框架等。此外,做开发的,各种业务建模这些就没有必要说了。
  做开发偏运维的,操作系统最起码会用,由于国内基本都是LINUX架服,所以基本的操作命令要会(本人就知道一个关机的命令),还有网站运行过程中性能优化,服务运行优化,以及开发相应的自动化工具监视、改善以及部署整个Web系统等。
   此外,还需要一些做研究,为上边这些人员做一些简单方案提供、技术选择等。
要是我来找互联网技术人员,我就会从上边这些方面来考虑,而不是去问他快排和计数排序那个稳定(有可能我还是井底之蛙,做的项目还达不到那个高度)
最后加一些我碰到的面试题。
1.    COOKIE和SESSION的区别,这个我面过互联网公司都有过。看到这个问题,知道的人都笑了,这个问题也叫有水平,最简单的共同和区别点看过的同学都知道,但是深一点,服务器做了负载均衡这么保证COOKIE能被识别,防止COOKIE被窃,SESSION会失效这些这么解决。
2.    单点登录系统的实现,这个很简单但是很实用,同学们可以准备。
3.    从你输入一个URL到最后页面呈现,说说都发生什么事,本人参加一个公司面试后,那个人说这是他面过这么多人,说的最完整的。个人觉得这种问题比单纯考那种TCP/IP的三次握手和层级结构有用的多,这个问题延伸一些,就能问道网站的性能优化,主要是上述执行过程的优化。
4.    数据库的优化,主要是SQL优化,读写分离,根据业务需求选择哈希分库或者范围分库以及反范式设计。
5.    设计一个推荐系统,这个原理看过的同学基本都知道,主要是数据、信息标签的存储等问题。
6.    邀请码的设计,不能存储生成的邀请码。
……
不说了,要不就成博客了。
--
附加一句:同学们都说分析问题和解决问题的能力最重要,这个我赞同,有技术含量的企业在技术考察中就会考察到学生的这方面的能力。此外,分析问题和解决问题的能力很大程度上和知识面有关,这个本人深有体会。
 
看到同学都在讨论,继续补一点:只是我自己的体会,不是让这个帖子成为口水贴。有同学回复说坚持自己所学,不要跟风企业,我觉得对于大多数人来说这个不可取,所有技术的发展与支持都是企业支持,也就是市场决定,单纯的选择技术而不考虑市场是没有前途的(除非这个技术在未来有市场),这个再IT界的案例太多,像当年的摩托霸气十足,敢构建铱星计划,敢挑战已到瓶颈的模拟通话技术,落到现在被新兴公司收购。
就像小时看到故事,有个勇士数十年如一日,苦练杀龙技术,当学有所成后发现确没有任何用处。
我以前也是一心只搞.NET,当发现市场需求和自己的期望不符时,立马转学其它技术,要是还是吊死在那棵树上,看今年的校招对.net的需求,毕业之日就是我的失业之日。
还有再目前在中国专心只搞自己的技术很有难度,我不敢想象拿着微薄的收入去搞没有市场自己的技术,而置自己家人的生活于不顾,而且我还很赞同松下幸之助的那句话:天才等于99%的汗水加1%的灵感,大多数没有成为天才因为缺少1%灵感和运气,搞一辈子,我可能会死在1%上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值