请各位懂电脑的帮我请求权基础分析法下这两台主机哪一款的性能好

如何才能招聘到高质量的程序员
如何才能招聘到高质量的程序员
学习啦【职业规划】 编辑:文桦
  程序员是从事程序开发、维护的专业人员。如今程序员中额度人才可谓是可遇不可求!今天学习啦小编将与大家分享如何才能招聘到IT行业中高质量的程序员?具体内容如下:
  首先, 进行一系列简单的&Hello World& 类型的在线测试
  对此,你是不是很惊讶呀?但确实有一些自称为程序员的人几乎不会编程。直到今天,仍会有一些招聘者告诉我,他们总会遇到一些应聘者无法通过最基本编程测试。
  所以,任何合理的招聘过程应把极简单的程序开发测试放在第一步。并且这个测试需要在线上进行,目的不是为了证明应聘者有多牛,而是看看他到底是怎样的开发者。这一过程很有必要,如果不进行这一部的筛选,你将来可能会后悔。
  现在有一些服务可以帮助你解决在线测试应聘者的问题,比如 Interview Zen 和 codility。
  看开发者在互联网上的个人资料
  任何名副其实的开发者应该有一份关于他们工作经历的简历。它不必十全十美,我只关注应聘者在互联网上因帮助他人而留下来的点点痕迹。向我展示你在 Stack Overflow 上的相关资料,凭此我可以了解你专注于哪些方面的技术信息,同时解决了哪些技术问题;给我一个你曾参与的开源代码库的链接;给我你的专业博客地址?Tumblr?Twitter?或其他一些我不曾听过的名字?不错,我可以好好看看。向我展示你曾设计的应用,你曾工作过的网站,及你在其中担任怎样的角色。
  了解应聘者曾做过哪方面的工作及在线创造了哪种类型的贡献,对于招聘者了解应聘者适合做什么、不适合做什么有很大的帮助。
  雇佣适合企业文化的人
  正如 GitHub,我发现很好地融入企业文化比整天埋头苦工更容易获得成功。
  我们会在面试过程中和应聘者谈论哲学,我们十分重视这个过程。我们希望来 GitHub 工作的员工了解他们将要进入的这个企业,确认他们能很好地适应公司的环境。这个过程包括一块吃饭,一起谈论企业文化、哲学、我们曾经犯过的错误、未来的规划等话题。
  早些时候,我们招聘只注重应聘者的技能,而对于他是否适应企业文化,是否懂哲学并不太关注。很自然,这些招聘并没收到很好的效果。所以现在我们不仅注重应聘者的技能,是否能融入我们也是我们考察的重要部分。
  据我所知,不是所有的业务领域都有相应技术圈子,但如果有,招聘者一定要尽可能地从技术圈子中招人。因为该圈子中的技术人员会自然而然地对你企业所做的事感兴趣,也会很容易融入到与他们意愿一致的企业中。这些应聘者较好适应企业文化的可能性是异常高的。这也正是招聘者乐于见到的。
  与应聘者电话沟通内容需结构清晰
  上面提到的事你都完成了,现在是时候给应聘者打个电话了。记住这个电话不是用来聊天的,而是为了筛选应聘者。所以通话的内容是关于技术话题的,而且结构层次要清晰。如果内容不太合适,你和应聘者都会被带离此次通话的目的。内容应该覆盖技术基础,总结下来有下面几点:
  1、快速编程。如:编程实现从 Int 数组中找出最大的 Int 型数据;
  2、一些基本的设计。
  3、脚本语言和正则表达式。如:请从该目录中提取包含电话号码的文本文件列表,并以特定格式输出。
  4、数据结构,如,你什么时候会采用哈希表 ,而不是数组?
  5、比特和字节,如:程序员为什么问说出&oct (31) == dec (25)&类似这样的笑话。
  该举措的目的,是为了到下一流程后,可以节约应聘者和招聘者更多的时间。你一定要坚持自己的立场,如果发现该应聘者多点不符后,尽早放弃该面试过程。
  请应聘者参与实际项目
  应聘者顺利通过了上文提到的四关,是时候进行面对面的面试了吗?现在还不是时候。
  我曾见过一些应聘者,他们也顺利通过了上文提到的层层考验,但最终在实际工作中,并不能很好地完成实际任务。
  如果你想确定无疑地判断他是否是一个优秀的应聘者,那就给他一个实际的项目做。我说的不是一般的、抽象的编程任务,而是你们公司现在正在进行的某产品的一个实际开发模块&&你本计划交给公司实际员工做的任务。
  选择一个测试项目,在理想的情况下可以在几天,也可能最多在一个星期或两个星期内完成。应聘者可以在公司里完成,也可以远程工作。我知道不是每个企业都能把他们的项目切分成一些这样的小项目,分给应聘者在公司外完成&&但可以尽力尝试让应聘者在公司内完成。我个人认为,如果你无法为优秀的应聘者分配这样一个微项目,很可能说明你为现在员工分配的任务存在不合理性。
  如果应聘者出色地完成了所分配的测试项目。恭喜你,你找到了一个高素质的应聘者,他已被证明可以出色完成各项工作。到现在为止,我所见过的通过该项考验的所有应聘者都能在实际工作中很好的完成任务。准确地说,也不是百分之百保证,但我把该项测试看得很重要,因为在应聘者还未被雇佣前,你可以近距离地观看他在实际项目中的表现。如果测试项目没成功,就把在该项目上所付出的代价看作一笔&退出费&,这相比请公司的 4 或 5 个人来进行一场昂贵的面试过程便宜多了。最坏的情况是,把该项目用于下一个优秀的应聘者。
  是时候与应聘者见面了
  最后,你应该选一个时间与面试者见上一面了。这是必然的,但通过之前所进行的一系列测试,你应该 95% 地确认这个应聘者就是很好的雇佣对象后再与他见面。
  我并非面试专家,但我不喜欢问一些很难的问题,适度就好。
  关于如何面试开发者,我有自己的一套理论:给面试者 15 分钟的时间,请他陈述所擅长的领域。相比与传统的面试方式,我认为这可以取得更好的效果,困为你可以很快地探明下面问题:
  1、这个人喜欢做什么样的工作?
  2、他是否擅长在小组中交流?
  3、他能否很好地解决他所擅长领域中的问题?
  4、你的团队是否愿意和他一块工作?
  每个开发者都应该知道一件事,即如何推销自己、代码以及项目。
  任何事都无法绝对保证
  请正确看待上文所列举的招聘流程。它们有时很成功,有时也会失败。根据你自己的特殊情况,调整这些建议,贴合你的想法,忽略某些步骤(虽然我强烈建议你最好不要省,即便是跳过第一步)。即便在最理想的环境下,招聘人才也是一件很难的事情。一个工作机会的获得会受很多因素的影响,往往不受人的控制。正如人们说的,人本来就很复杂。
  如果把工作看作一种关系,每周需花 40 多个小时相处的关系,那么公司和招聘者都应该有一种信念,努力找到适合自己的对方。我们的目的不只是找到一个工作,或雇佣一个人,而是为了生活乐趣,为了创造一种友爱的关系。
本文已影响 人
[如何才能招聘到高质量的程序员]相关的文章
看过本文的人还看了
【职业规划】图文推荐下载合伙投客户端
腾讯高级架构师:创业公司如何从100份简历中招聘1个程序员
(文/猎云精选)
猎云网注:本文为迅雷产品总监,原YY语音、腾讯高级产品经理BLUES在QQ秀产品中心的同事,梅沙科技的技术合伙人Martin的分享,他来自腾讯,这篇文章来自Martin多年来面试程序员的经验总结,也有梅沙科技程序员Mask、Lemon一起作为面试官参与面试之后的总结思考。本文转自BLUES (微信号:BLUEMIDOU)。
创业公司如何招聘程序员有多难?
我们每招聘1个程序员,几乎要看100份简历。
梅沙科技的技术合伙人Martin来自腾讯,是BLUES以前在QQ秀产品中心的同事,高级架构师。这篇文章来自Martin多年来面试程序员的经验总结,也有梅沙科技程序员Mask、Lemon一起作为面试官参与面试之后的总结思考。
Martin把这份开发团队的招聘文章写完,发给BLUES的时候,顺便说了一句,做好了被喷的心理准备。
这年头,观点比较鲜明的文章总会有不同看法,这是正常现象,正如互联网公司不可避免的进行需求PK。
其实,每个创业公司的奋斗过程,都不容易,我们想把在这个过程中的探索进行总结分享,但愿对更多的创业团队有帮助。
这篇文章,就是梅沙科技在创办4个月以来的开发团队招聘实录。
在团队组建过程中,产品经理的招聘,相对顺利。程序员的招聘,则经历了所有创业团队遇到的各种困难,并且,我们还是在一个办公地点相对偏远的创意园区,所幸,在坚持质量第一的前提下,我们的招聘进度符合预期。
对加入梅沙团队的每一位同事,都很感激,在团队还很小的时候,能加入进来,一起做一件对教育有价值的事情,但愿更多的小朋友都能在梅沙教育体系下快乐成长。
从5月份招聘以来,直到8月上旬,招聘历时3个多月,后端开发的招聘比较幸运,很快就招到,或许也是因为我们的技术合伙人Martin本身是后端开发,他在招聘过程中的面试官评价,一直获得应聘者很高的认可。
前端开发,是简历少,人难招。
iOS开发,简历很多,但简历质量不高。或许因为前两年的APP创业大潮之下,很多程序员开始走上iOS开发之路,不少新的程序员也选择了iOS之路,今年创业遇冷,不少iOS程序员被释放出来。
下面从技术面试的每一关通过率和每一关具体的评价情况进行统计分析。
简历:不过关的五大原因
梅沙科技目前的简历来源:BLUES的公众号、拉勾网、100offer。
iOS的简历比较多,最终应聘成功率是1%。前端应聘简历少, 相对的应聘成功率高一些3%。
这里的成功率是用招聘成功人数除以简历数。
程序员招聘的流程如下:
技术基础面
第二轮技术面
产品/ui 沟通
iOS岗位从简历筛选到面试情况的统计情况如下:
通过率(入选数/应聘简历数)
技术基础面
第二轮技术面
沟通和hr面
前端的从简历筛选到面试情况统计如下:
通过率(入选数/应聘简历数)
技术基础面
第二轮技术面
沟通和hr面
从最终通过率来看, 前端的通过率是比iOS要高的。 原因是前端的简历确实比较少,我们只能尽量从可培养性方面考察。
简历不过关的五大原因如下:
不通过原因
项目经验,工作经历不符
学历不符,且不够优秀
工作变动频繁
简历太过简单
杀马特非主流个人照
上面的简历筛选中,包括iOS与前端, 大体类似。 前端的简历,转专业的情况比较多,下面也作一个专业上的统计。
前端简历按专业统计
本科且计算机专业
前端这个岗位有个特点, 应聘者中有20%的人是先从事过其它行业,如化学、机械、电子等, 再通过自学或者培训转业到前端开发。
从总体的面试结果分析, 一般计算机科班出身的人无论从基础上还是深度上来说,都会比非计算机专业的应聘者要优秀。当然,也有非科班出身的牛人,只是概率比较小,所以从所学专业来看也可以从一个角度反映出简历的水平。
电话面试:项目描述不清是主要失败原因
基本问下工作经验,沟通是否顺畅。
不通过原因
项目描述不清晰
工作地点不符合
项目描述是指, 面试的时候让应聘者描述自己做过的项目,自己在项目中担任的角色和职责,自己在项目中做了什么,有什么效果。一般对自己所做的东西描述不清楚,我们就不考虑了。
技术面试:体现核心能力
基础面与二轮技术面,问题有交错,放在一起,下表是未能通过技术面试的主要原因。
计算机操作系统
应聘者中大部分比较薄弱
网络协议知识
应聘者中大部分比较薄弱
语言基础知识
技术能力是首要的条件, 如果这个都不满足,基本上不用考虑了。
至于怎么判断是否有相关专业的知识,具体分岗位来描述。
每一个岗位都有一个对应的知识栈。
这里就后端、前端、终端来分别列举一下知识点。
计算机基础知识
无论做前端、后端,还是终端。如果有扎实的计算机基础,如进程与线程知识,TCP/IP协议,数据与结构等,那会是很大的加分项。
有很多人认为计算机基础知识只是做后端,做服务器开发的人才需要,像前端开发,根本不需要,这是绝对错误的。
对于只应付日常业务编码的普通工程师来说,扎实的计算机基础知识,是锦上添花的东西,但对于优秀的前端工程师来说,基础知识是必不可少的。
操作系统的基础知识 ,能更好的掌控代码, 避免性能上不必要的开销, 或者对其有所警觉, 同时也能避开一些逻辑上的问题。
数据结构和基本算法
清楚特定的基础数据结构的可以处理的问题, 如果已经知道这些算法,那可以跳过很多耗时的技术选型阶段,这就是知识的广度带来的优势。
网络协议知识
TCP/IP等网络协议知识,到应用层的HTTP/HTTPS等,对这些协议的深入理解,可以解决web页面在移动网络下的访问耗时长等疑难杂症,提出优化方案。
一般来说,做后端要求对计算机基础知识掌握得非常扎实。才能应对像编译、网络连接、高并发访问下的各种问题与疑难杂症。
后端程序员面试点
操作系统基础知识
文件系统、任务调度、内存管理,进程与线程、进程间通信以及同步,锁等知识必须要有。
一般要求有C、C++基础,精通如但不限于C/C++/PHP/Java/Go等至少其中一种后端语言
扎实的网络协议知识
TCP/UDP、HTTP、HTTPS协议,Linux网络编程
存储数据库知识
包含数据库原理,sql语句的使用、优化。积累搭建mysql和运维mysql的经验。
数据结构知识
不要求能写出RB树的算法,但对常用的排序要熟悉。熟悉常用软件设计模式
熟识常用的框架与组件nginx, mysql,redis等
实际的项目经验
能分析出系统各个模块的关系,为什么这样设计。系统瓶颈在哪里,如何优化性能
前端程序员面试点
主要分为两大部分:前端代码技能部分(html、css和javascript),前端架构部分(构建工具,新生框架,优化以及安全性)。
如果把一张网页比喻为一栋楼房,那么html相当于搭建一个主体结构,css相当于来做粉刷,javascript发挥的作用就是类似于水泥的粘合剂。其中任何一个环节出现问题,都会可能导致房屋出现问题。
html基础,如各种Element的含义和用法。
dom结构与事件模型。
css样式部分
得熟悉最基础的布局方式和一些常用定位的作用和区别和css的一些常用的选择器以及选择器的权重,另外就是css的浮动部分,掌握浮动的应用场景和消除浮动的一些常用方法。
看是否熟悉响应式布局这块,对最新的css3的知识掌握熟练程度以及移动端这块的经验,这块属于面试之中比较看重的一块,css3中出现了很多的新的浏览器特性和效果,使用熟练程度之余还要知道它的兼容性。
javascript基础
理解闭包的概念和用途,原型链和继承的概念。
网络基本知识像HTTP协议,Get/Post的区别与联系。
前端与后端交互的数据格式Xml/Json等。
进阶部分包括得熟悉使用javascript的流行mvvm框架(vue,angular,avalon等等)其中的一种到两种,构建工具(webpack,fis,gulp等等),以及系统后期的一个优化过程(包括静态资源压缩,合并,按需加载,分流)
前端安全这块的知识,如跨域机制,CSRF/XSS 漏洞等知识以及如何防范。
客户端程序员面试点
首先要对系统如何启动App,App如何运行有一个整体的了解, 这里就包含App启动过程,沙盒机制的目的,实现原理等。
App说到底就是一个可以运行在手机操作系统上的程序与资源的集合,所以对于操作系统中进程与线程的知识点,App怎样处理图片与外部网络资源,也要有一个整体的认识。
再有就是App界面布局和交互的知识。以iOS为例,要掌握:
语言基础包含OC,Swift,至少精通其中一种。对象的生命周期,面向对象思想。
App界面知识点,自动布局, 自开发组件。和UIView,UIControl,UIScrollView,UIViewController等核心类型的概念和关系。
App屏幕旋转及屏幕适配,触摸、手势、加速计的使用。
手机功能,定位、电话、短信、邮件、日历和通信录的操作知识。
网络协议HTTP/TCP等基础知识,Socket/CFNetwork/NSURLConnection等类的使用
代码管理如Git/Svn的使用,开发测试流程,Bug管理,打包上架到苹果审核发布等知识。
常用类库框架UIKit/Foundation/MapKit。
热门技术如微信支付/友盟分享/第三方统计等的使用和注意事项。
性能调优方面,内存泄漏、网络流量、耗电量方面的优化知识,Analyze的使用。
程序员的进取心
除了自己工作上用到的知识, 对业界新动态,新技术也有所学习和了解。
这里涉及到业余时间怎么安排分配,如下班后,就只有在家里/寝室通宵玩游戏,看电影,从来没有想过要为自己的发展加一把油,充电学习的人, 会被判断为没有进取心,得过且过的人。
当然,不是要求没有娱乐,从不休息,但至少有过学习的安排,所谓学无止境,没有人敢说自己的知识是足够的。如果只靠工作时间学习充电,是没有多少时间去深入反思和总结的。
尽量要避免的减分项
在约定好的时间下,面试迟到。
在面试场景里, 如果见面是给面试官的第一印象的话, 那么是否能准时是给面试官的第第一印象。参加面试不准时,留给人的评判空间有:
不尊重面试官。时间对真正想做事情的人来说,是很宝贵的,面试者迟到,其实是浪费了面试官的等待时间。虽然这时候面试官也可做工作上的其它事情,但时间也是碎片的,而且不能投入。
参加面试都不能按时,那么以后的工作任务也不一定能按时完成。参加面试是获得工作机会的一个相当重要的步骤,不准时参加面试,要么是没有分析能力,不知轻重,要么是时间把握能力太差。
所以说,尽量不要迟到。可以提前些时间出门,避免交通堵塞等意外耗时。
万一真的是迟到,怎么办。有如下补救方法, 提前告知会迟到,让面试官可以做其它事情;见到面试官后, 要表明一下歉意。这样给人的感觉是有时间观念的,不至于被扣分扣得很么严重。
如何找到面试的地点,这其实也是一个考验。如果连找一个地点的能力都没有,那如何做好工作上的事情。
曾经遇到一个面试者, 直到约好的面试时间,才打电话来问,坐车到哪一个地铁站。过一会又打电话问,到地铁站后从哪个出口,坐哪一路公交车到哪一个站。
这种问题相当低级,完全没有一点准备,如何放心让这种人去做事情。
解决方案是:提前查好路线,规划好时间。像坐什么车这种事情,自己动动手指在地图上搜索一下的事情就真的不要打电话问了。如果确实找不到地点,可以打电话表明一下自己的歉意,寻求面试官(或公司招聘联系人)的帮助,因为面试官没有义务为你指路。
面试姿势不正
面试毕竟是一个比较正式的会话场合,坐姿和行为举止都需要有分寸。 如果应聘者坐姿不正,对面试官不尊重,那么这场面试基本没戏了。曾遇到个应聘者,工作5年,一副老成的姿态,本来工作经验和知识尚可,但行为和表现非常没有分寸,除了坐姿不正,空隙期间还翻动办公室器材。兄弟公司团队的人都看不过去了,结果自然是让他回去了。
跨岗位面试看缘分
这个包括与产品经理、u设计师、测试等相关岗位的沟通, 通过之后,还有hr面,具体就不细讲了。
三观正常,为人正直,诚信。 身心健康。
如果年轻、热情有朝气,当然更受欢迎。
有句话说招聘就像相亲一样,很难找到合适的。的确,从应聘方和招聘方来说,要找到合适的公司职位/候选人都不容易。虽然像BAT这样的高帅富很容易吸引大批人才,但要在上千的应聘者中挑选出合心意的人才也要花费很大的成本。招聘说到底是信息匹配的过程,如果能做到信息的透明化,做到精准匹配,当然可以节约大量成本,也有招聘网站在做,但实际上依然很难做到完全匹配。
另外一点,无论从应聘方还是招聘方,要收获到高质量的职位或人才,都要不断的提升自己的价值,符合对方的标准,才能达到自己的目标。
小程序搜索难?猎云网精品小推荐正式上线,你想要的都在这里:
本文为转载,转载请注意真实来源
扫码关注猎云网
1.猎云网原创文章未经授权转载必究,如需转载请联系官方微信号进行授权。
2.转载时须在文章头部明确注明出处、保留官方微信、作者和超链接。如转自猎云网(微信号:ilieyun)字样。
3.猎云网报道中所涉及的融资金额均由创业公司提供,仅供参考,猎云网不对真实性背书。
热门关键词
用心服务创业者
扫码关注微信平台您所在的位置: &
如何招聘一个能干活的程序员
如何招聘一个能干活的程序员
Shuaiying Hou
写这篇文章不是件容易的事情,因为需要举一些实例,就会牵扯到过去现在的各种见闻,也会牵涉到业界的各种看法。既然博客也是公开状态,还得考虑有的话是否需要委婉一点讲… 不过毕竟出来混了也有一年半载,对这方面还算略有心得,那就班门弄斧一下,还望高手不吝赐教。
写这篇文章不是件容易的事情,因为需要举一些实例,就会牵扯到过去现在的各种见闻,也会牵涉到业界的各种看法。既然博客也是公开状态,还得考虑有的话是否需要委婉一点讲& 不过毕竟出来混了也有一年半载,对这方面还算略有心得,那就班门弄斧一下,还望高手不吝赐教。
关于一个程序员该具备怎样的能力,这篇帖子里面一共讲了7点。这7点本身没错,放之四海而皆准。但是对于程序员这一个特定的群体,似乎又显得过于宽泛。有一些比如善于沟通这样的能力更多是靠环境激发出来的。如果不幸混进一个国企,那其实锻炼更多的还是和领导套近乎和推卸责任的能力& 所以我认为,一个优秀的程序员有两个最核心的能力是不可代替的:解决问题的能力与学习能力。
先来说说&解决问题&的能力。
这个能力是相当宽泛的:debug是解决问题;设计某种架构是解决问题;提高用户体验是解决问题;根据需求给出整体的解决方案同样是解决问题。概括起来就是本文表退中的&能干活&,或者说就是&getting things done&。解决一个问题实际上分两方面:其一需要有足够的技术能力找到解决方案;其二需要对业务有充分的了解,明白到底该怎么做才能达到用户的预期。结合实际来说,做一个游戏不仅要完成策划提出的功能需求,还要考虑做出来的功能操作上是否便利,是否符合玩家的习惯和心理预期,是否可能引起玩家的误解和不满等等& 在技术熟练的情况下,绝大部分的功能要实现起来并不需要花很大的精力在技术上,而是需要把精力投入到用户体验上面,对每一个细节都斤斤计较,这样才能做出精品。这和技术实力并没有太大的关系,很多时候关键看执行者的耐心、细致,甚至是品位。在对大部分游戏系统有充分了解的前提下,只需要策划给一个大致的思路,略加点拨就可以做出符合预期的实现,这才是一个合格的游戏程序员应有的素质,吃过了五星级料理,虽然未必能总结出什么理论,但直觉会让你明白什么是一定会被策划打回来的狗屎,所以这就是我会去花时间玩大量不同类型游戏的主要原因(终于成功为自己玩游戏找到借口,噢耶~),
熟悉业务是解决问题一方面,另一方面就是技术水平。虽然大部分情况下不需要非常高深的技术,但如果牵涉到了一些关键的核心算法,或是性能调优、架构设计,技术水平就显得尤为重要。这就一定会牵涉到学习能力的问题。不可否认的是,技术积累非常重要,但同一个方向上的积累同样会造成思维定势,从而不愿主动走出自己的舒适区。光从解决问题的角度而言,在碰到难题时,首先需要尝试相对稳定和成熟的解决方案,但同时也不能排斥在必要的时候使用一些比较&古怪& 的方法。保持开放的心态(keep an open mind)在解决问题时同样也很重要。
在来公司以后,我参与的第一个项目是一款和《百战天虫》相近的回合制射击类游戏。当时刚进入项目,听了策划介绍后我就把战斗场景按难度分成了四个主要部分:1. 人物移动等基本操作 2. 场景视角缩放 3. 炮弹飞行轨迹 4. 地形破坏。实际上前三个部分在技术上没有太大的难度,主要还是跟着策划的思路走,但第四个问题在当时确实把我给难住了,因为在这方面没有技术积累,根本连如何解决的思路都没有。之后用过了两个方案,一是用物理引擎来实现炮弹飞行和破坏,这个方案确实可行,但与游戏的整体风格不符,而且物理引擎本身也会有一定限制,在不熟悉的情况下适得其反。第二个方案是用openGL提供的一些接口,通过遮罩图来实现破坏。这个方案在应用中发现效率太低,炮弹落地时会需要将近一秒才能重绘完成,之后发现是openGL的运算接口占用了大部分时间,这也是很难进行调优的。当时沈晟给了一个解决方案,概括起来就是自己实现一套相关算法,然后重载材质。当然这套算法比较hack,需要直接操作内存中的图片数据,当时因为对引擎和图片格式不熟结果我没有看懂沈晟给的示例&.后来又去调视角缩放花了很长时间,在将近一个月后某个周末的早上突然开了窍最终把这个问题搞定了。实际花了一个多星期的时间写出了最后的解决方案,只需要0.1 秒就可以完成地形破坏的运算与重绘,顺便还解决了人物移动和碰撞检测的问题。当然那套算法在实现时很丑陋,因为使用了非常底层的方式,还存在一些溢出的 bug需要调整。不过这个解决这个问题的过程给了我很大的启示:学习能力,特别是底层的基础知识非常非常之重要。现在想来,如果之前的一份工作不是写C语言而是隐藏了太多底层实现的JAVA,恐怕就几乎不可能解决这个问题。
学习能力:重视基础,不纠结于细节
在上一篇文章中,我提到了程序员能力的两方面&&解决问题的能力与学习能力。这两点可以说是相辅相成的。而在学习能力中,基础又是必不可少的一条。下面就来说说我对基础的理解。
当我还在大学的时候,我的数学成绩一直不太好。有一个同学在其他方面毫不出众,但他所有和数学相关的学科都学得非常好,考试前也只是翻翻书,并没有付出相当大的精力和时间。我始终以为他天赋异禀,但后来才发现,无论学到什么新的东西,他总是能用非常简洁的语言解释这个概念的本质。换而言之,在绝大多数人还在死记硬背的时候,他已经了解到了一些本质性的东西&&这些东西可以把所有和数学这门学科相关的知识串联到一起,对他而言,看问题的视角也和绝大多数人不同了。
什么是&基础&?我认为这是对一门学科本质的理解。什么是计算机科学的基础?计算机架构,计算机程序的构造,。几乎所有的现代计算机都基于冯诺伊曼架构,为何这一架构会成为现代计算机的主流?它又是如何设计出来的?我们都知道一个程序的地址空间包含堆区、静态区和栈区,那么为何要将其分开设计?为何在预编译时需要进行词法和语义分析?能回答出这些问题中哪怕一个,就说明对这些本质性的问题已经有了较深的了解。
最近我一直在看&,其中提到了很多关于程序设计方面的知识。此人读过三个博士学位均未毕业,但不可否认的确是个大牛。他在文章中提到的很多东西,感觉就让人上升到了一个新的层次。虽然计算机语言层出不穷,但是归根结底,其本源都是相同的。有经验的程序员可以很快地学习一门新语言,更多地是因为对程序语言本身的了解,所以一通百通;至于一些技术细节,大部分时候通过查资料就可以解决问题。遗憾的是,在中国很多招聘者与应聘者都没有意识到这一点,于是就出现了&程序员干到30岁就得转行&这种错误的趋势。很多人并不明白他们应该用什么方法来积累经验,编程本身对他们而言也许只是种维生手段。而雇主也用应试教育的思维去挑选应聘者,在这样的前提下挑选出来的往往只是一些代码机器。当然代码机器在外包公司这种劳动力密集的地方还是大有用处的,谁叫我们国家人口众多,劳动力从来不缺呢,呵呵。
废话讲了一大段,接下来还是讲讲关于如何招聘吧。
首先需要声明的一点是,以下这些建议,不适合外包公司、国有企事业单位,只适合100人以下,团队和人事关系相对简单的中小型公司及创业型团队。当然,如果是大公司下,团队leader比较强势和开明,有较大的资源调配及话语权,也是可以一试的。
在我看来,要招聘到一个&能干活&的程序员,有以下几条原则:
1. 此人是否和团队有着相近的价值观,作为一个团队的leader,是否愿意能够留住这名员工?
之所以把这一条放在第一位,是因为国内现在IT行业人员的流动性实在是太离谱了,干个一年拿了年终奖就跳槽的事情比比皆是。在IT这个行业,新员工加入任何公司都至少需要半年左右的磨合期才能发挥出其应有的水准,相当于一半的时间都在磨合中渡过,对于自己和整个团队都不是件好事。
寻找价值观相近的人共事,首先就可以确保这个人对团队所从事的事业和目标有着相当的兴趣和动力。这些兴趣和动力,可以转化成额外的工作成果,这也是优秀程序员和码农之间最本质的区别。
2. 注重细节,但不拘泥于细节
把这一条放在第二位,是因为我看到了这么一道题:
int&a=2;&a+=a-=a*a;&a=?&
首先我要声明的是,如果在任何面试中面试官给我出类似的题目,即便我没有立刻走人,这家公司在我心目中的地位也会一落千丈。在实际编程中,最重要的是代码的可读性和非二义性。在&&下,由于编译器的实现不同,这道题的答案是不唯一的。何况这样的写法在实际工程中除了造成其他同事的困惑和可移植性降低之外,一无是处。
前两天我还碰到了一个类似的问题(写得不太严谨,各位包涵):
string&text&=&&123&; && &this-&methodA(text,&text.append(&456&)); && &void&methodA(string&textA,&string&textB) && &{ && &string&textC&=&textA; && &}&
问 textC 的值是多少?
很多人第一反应,textC的值当然就是123。对函数的有一些了解的人会认为是123456,因为参数从右至左压栈,会先执行append方法将text值扩展为123456。但在实际应用中,ios平台上的执行结果是123,安卓平台编译后的执行结果是1230。是不是很奇怪?其实这是一道不错的面试题,但不应该直接问面试者执行结果,而应该问这段程序中可能存在的问题,以及改进方法。最简单的方法就是加一行string text2 = text.append(&456&P),这样就不存在压栈顺序不同导致不同平台下结果无法预期的问题,代码的移植性也就更好了。如果拘泥于一个&正确&答案,那就陷入了应试教育的泥潭。我们要招的是一个能够解决问题的人,而不是纠结于的书呆子。
当然,这些细节问题可以体现出一个人的功力,但不能本末倒置,以了解所有的细节为目标。在面试中,我还是主张这些问题尽量少问,如果面试者无法回答,可以用探讨的方法给出一些提示,主要还是观察其思路和态度为主,不宜过分纠结。我曾经经历过国内某规模不小的公司一场很不愉快的,面试我的人听语气应该也不是个等闲之辈,遗憾的是他在20多分钟的时间里有15分钟都在一些细节问题上面纠缠不休。他问了我在之前工作中碰到多线程问题的解决方案,我当时回答他在某某地方使用了读写锁,之后他就开始不停询问为什么要用读写锁等等等等。其实理由很简单,因为在那个特定条件下读操作次数远远多于写操作,所以读写锁是最优解决方案(事实上我在设计时也是这么想的)。他可能是要问如何尽量避免加锁达到性能优化,但是首先性能优化必须在有充足证据证明效率低下的情况下才有必要进行,而我当时并没有碰到这种情况,所以没有必要为了一个可能的性能问题大费周章。我当然也不能对他说&你这个臆想症患者给老子闭嘴&,于是只能在尴尬中渡过这个问题。后来他问了我一个gdb的使用问题,我想他的本意应该是看看我调试程序的功力怎样,没想到他开始问我gdb的常用命令有多少多少个,条件断点该如何设置等等等等。对于这些问题,我完全可以找一本gdb使用手册扔在他面前。经过了这场面试,不管对方的态度如何,这家公司的技术实力在我的心中也已经打了一个大大的问号。
在面试中,一个面试官应该尽可能地去了解并引导对方解决问题的思路,而不是拿一些细节问题是否答出了&标准&答案来评判一个人水平的高下。毕竟,细节知识上的欠缺很容易弥补,良好的思维习惯却是无法在一朝一夕养成的,这一点对于评判那些应届毕业生尤为重要。
顺便多提一句,很多公司的招聘启事在应聘者要求中往往会不小心写错一些技术的名称,或是犯一些低级错误,这会让应聘者对这家公司的专业性产生怀疑,反之亦然。在简历和招聘启事上,还是多注意一些细节吧~
3. 良好的编码风格
在编程中,最困难的事情莫过于起变量和函数名。好的变量和函数名能让人一眼就看出这段程序的功能,而糟糕的名字(没错!就是我上面写的textA这种玩意,所以我也是个烂程序员)往往让人摸不着头脑。由于迄今为止还没有任何一种主流支持英文以外的字符,所以使用标准的英语起名应该成为共识。这里我要吐个槽,我在代码中发现了一个叫&Supersport&的玩意,光看这名字还以为是什么比赛,一问才知道是&竞技场&,实在想不通为什么不用&Arena&。还有像强化装备翻译成&upgrade&也容易造成歧义,国外一般都用 &enhance&特指装备强化。还有像&baoxiang&,&yamede&,&yikuyiku&这种变量名真是让我泪流满面&.(后面两个是我杜撰出来的,LOL)。所以,要辨别一个程序员的水平,最好的办法就是看看他的代码变量名是否清晰,换行缩进的格式是否严格,会不会写一个几百行的函数不知道把其中的功能块进行封装&.
4. &是否有个人博客网站、、stackoverflow
是的,如果一个应聘者有以上这些内容,我一定会考虑优先面试及录用他。
以上这些内容都需要在平时挤出业余时间来完成。架设网站,给开源软件和社区作出贡献,在专业性上肯定不如严谨的日常工作,但同样需要付出精力和时间。如果一个人愿意在业余时间做一些和技术相关的事,至少能说明这个人不仅仅是想混口饭吃,而是将其作为一种爱好,这样的人假以时日必有所长。这些公开资料同样可以检验应聘者的真实水平:个人网站可以看出一个人的品味及价值观;github上的代码可以看出编码风格;StackOverflow上的活动可以了解他的表达能力和英语水平。能做到这些的应聘者在国外较多,但在中国并不多见。当然,还是以兴趣和实际能力为主,做不到也无需强求。
前前后后花了快一个月总算把这篇文章写完了!我写文章的速度的确不容乐观啊&..总算是坚持到最后一刻了!
原文链接:【编辑推荐】【责任编辑: TEL:(010)】
关于&&&&的更多文章
这个架构是从我近期在做的一个项目中剥离出来的,这个项目由我从
随着云计算、物联网、大数据、移动互联网的大发展,你应该知道这些。
这周Windows8.1正式版发布了,不知道各位有没有去更新
十一长假归来上班,好像更累了;早上也越来越堵了。小
数据结构课程,貌似是大学计算机、网络、软件等专业的
它从最简单的地方入手,不仅讲述了JavaScript的基础知识,还讲述了JavsScript如何操作CSS、DOM等Ajax基础技术。而关于跨浏览器兼
51CTO旗下网站

我要回帖

更多关于 数据分析转正申请 的文章

 

随机推荐