zz编程技术面试的五大要点

  扎实的基础知识、高质量的代码、清晰的思路、优化代码的能力、优秀的综合能力是编程技术面试的五大要点。 找工作一直是一个热门话题。要想找到心仪的工作,难免需要经过多轮面试。编程面试是程序员面试过程中最为重要的一个环节。如果能在编程面试的环节充分展示自己的能力,那么拿到中意的Offer就是水到渠成的事情。 我先后在欧特克、微软和思科等公司任软件工程师,多次接受他人的面试,同时也面试过很多人。总结面试与被面试的经验,我发现尽管面试官的背景、性格各不相同,但都关注应聘者五种素质:扎实的基础知识;能写高质量的代码;分析问题时思路清晰;能优化时间效率和空间效率;具备包括学习能力、沟通能力、发散思维能力等在内的综合能力。 扎实的基础知识 扎实的基本功是成为优秀程序员的前提条件,因此面试官首要关注应聘者的素质即是否具备扎实的基础。通常基本功在编程面试环节体现在两个方面:一是编程语言,二是数据结构和算法。 每个程序员至少要熟练掌握1~2门编程语言。面试官从应聘者在面试过程中写的代码以及跟进的提问中,能看出他编程语言掌握的熟练程度。以大部分公司面试要求的C++为例,如果函数需要传入一个指针,面试官可能会问是否需要为该指针加上const,把const加在指针不同的位置有什么区别;如果写的函数需要传入的参数是一个复杂类型的实例,面试官可能会问传入值参数或者引用参数有什么区别,什么时候需要为传入的引用参数加上const。 数据结构通常是编程面试过程中考查的重点。在参加面试之前,应聘者需要熟练掌握链表、树、栈、队列以及哈希表等数据结构以及它们的操作。如果我们留心各大公司的面试题,就会发现链表和二叉树相关的问题是很多面试官喜欢问的问题。这方面的问题看似简单,但真正掌握也很不容易,特别适合在短短几十分钟的面试时间内检验应聘者的基本功。如果应聘者事先对链表的插入和删除结点了如指掌,对二叉树的各种遍历方法的循环和递归写法都烂熟于胸,那么真正到了面试时也就游刃有余了。 大部分公司对算法的要求都只是考查查找和排序。应聘者可以在了解各种查找和排序算法的基础上,重点掌握二分查找、归并排序和快速排序,因为很多面试题都只是这些算法的变体而已。比如把排序好的数组的前面若干个数字移到数组的后面,然后问怎样在这个数组之中找到最小的数字。这道题其本质就是考查二分查找。少数对算法很重视的公司比如谷歌或者百度,还会要求应聘者熟练掌握动态规划和贪婪算法。如果对这种类型的公司感兴趣,那么应聘者在参加面试之前就应该加强对相关算法题目的练习。 高质量的代码 只有注重质量的程序员,才能写出鲁棒稳定的大型软件。在面试过程中,面试官总会格外关注边界条件、特殊输入等看似细枝末节但实质至关重要的地方,以此来分析应聘者是否注重代码质量。很多时候,面试官发现应聘者写出来的代码只能完成最基本的功能,一旦输入特殊的边界条件参数就会错误百出甚至程序崩溃。 举个很多应聘者都被问过的一个问题:写一个函数,把字符串转化成整数。这道题看似很简单,绝大部分计算机专业的毕业生都能用十行以内的代码实现最基本的功能。可是在实际面试过程中,十个应聘者中只有一个人能通过这道题的面试,因为绝大部分应聘者不能全面考虑到各种特殊输入,比如输入的字符串含中有非数字的符号、在字符串的开头有正负号、字符串中有正负号但其位置不是在字符串的开头。 除此之外,面试官还希望应聘者能考虑的边界条件包括2147483647(0×7FFFFFFF,int能表示的最大正整数)和-2147483648(0×80000000,int能表示的最小负整数)。 除了边界条件和特殊输入考虑不足之外,面试官还有一个不能容忍的错误就是程序崩溃。面试时很多应聘者都会忘记对空指针做特殊处理而导致程序崩溃。如果面试时遇到链表、二叉树相关的题目,应聘者一定要特别小心。因为这两种题目对应的代码里通常会有大量的指针操作,如果考虑不周到,就有可能对空指针进行操作而使程序崩溃。 比如这样一道题:输入一个链表的头指针和一个无符号整数k,输出该链表的倒数第k个结点。这个题目很多人都能想到用两个指针来解决:第一个指针先在链表上移动k-1步,同时让第一个指针和第二个指针在链表上移动。当第一个指针移动到尾指针时,第二个指针指向的就是倒数第k个结点。然而不是每个应聘者都能根据正确思路写出完整的代码。不少应聘者会忽略两种可能:一是输入的链表头指针有可能是空指针;二是链表上结点的数目有可能少于k个。忽略这两点的代码都存在崩溃的可能,从而很难获得面试官的青睐。 要想写出鲁棒的高质量代码,需要在动手写代码之前想好测试用例。在写代码之前,先要想好各种边界条件和特殊输入作为测试用例。当代码写好之后,自己在心里用之前想好的测试用例来检验自己写出的代码,这样就能在面试官之前发现并解决问题。以求链表的倒数第k个结点为例,如果事先想到了输入头指针为空指针和链表上的结点总数少于k这两个测试用例,并且在写好代码之后在心里模拟代码的运行过程,确保能够通过这两个测试用例的测试,那么这轮面试必然是能够通过的。 清晰的思路 只有思路清晰,应聘者才有可能在面试过程中解决复杂的问题。有时面试官会有意出一些比较复杂的问题,以考查能否在短时间内形成清晰的思路并解决问题。对于确实很复杂的问题,面试官甚至不期待应聘者能在面试不到一个小时的时间里给出完整的答案,他更看重的可能还是应聘者是否有清晰的思路。面试官通常不会喜欢应聘者在没有形成清晰思路之前就草率地开始写代码,结果写出来的代码容易逻辑混乱、错误百出。 应聘者可以用几个简单的方法帮助自己形成清晰的思路。 首先是举几个简单的具体例子让自己理解问题。当一眼看不出问题中隐藏的规律时,可以试着用1~2个具体的例子模拟操作的过程,这样说不定就能通过具体的例子找到抽象的规律。 其次可以试着用图形表示抽象的数据结构。像分析与链表、二叉树相关的题目时,可以画出它们的结构图来简化题目。 最后可以试着把复杂的问题分解成若干个简单的子问题,再一一解决。很多基于递归的思路,包括分治法和动态规划法,都是把复杂的问题分解成一个或者多个简单的子问题。 比如把二叉搜索树转化排序的双向链表这个问题就很复杂。碰到这个问题,不妨先画出1~2个具体的二叉搜索树及其对应的排序双向链表,直观地感受二叉搜索树和排序的双向链表有哪些联系。如果一下子找不出转换的规律,可以把整个二叉树看出三部分:根结点、左子树和右子树。当递归地把转换左右子树这两个子问题解决之后,再把转换左右子树得到的链表和根结点链接起来,整个问题也就解决了。 优化代码的能力 优秀的程序员对时间和空间的消耗锱铢必较,他们很有激情不断优化自己的代码。当面试官出的题目有多种解法时,通常他会期待应聘者最终能够找到最优解。这就要求应聘者在面试官提示还有更好的解法时,不能放弃思考,而应该努力寻找在时间消耗或者空间消耗上可以优化的地方。 要想优化时间或者空间效率,首先要知道如何分析效率。即使是同一个算法,用不同方法实现的效率可能也会大不相同,要能够分析出算法及其代码实现的效率。例如求斐波那契数列,很多人喜欢用递归公式f(n)=f(n-1)+f(n-2)求解。如果分析它的递归调用树,就会发现有大量的计算是重复的,时间效率是以n的指数增加。但如果先求f(1)、f(2),再根据f(1)和f(2)求出f(3),接下来根据f(2)、f(3)求出f(4),并以此类推用一个循环求出f(n),这种计算方法的时间效率就只有O(n),比前面递归的方法要好很多。 要想优化代码的效率,还要熟知各种数据结构的优缺点,并能选择合适的数据结构解决问题。我们在数组中根据下标可以用O(1)完成查找。数组的这个特征可以用来实现简单的哈希表解决很多面试题,比如在字符串中找到第一个只出现一次的字符。再比如为了找出n个数字中最小的k个数,需要一个数据容器来存储k个数字。在这个数据容器中,我们希望能够快速地找到最大值并且能快速地替换其中的数字。经过权衡,我们发现二叉树比如最大堆或者红黑树都是实现这个数据容器的理想选择。 要想优化代码的效率,也要熟练掌握常用的算法。面试中最常用的算法是查找和排序。如果从头到尾顺序扫描一个数组,需要O(n)时间才能完成查找操作。但如果数组是排序的,应用二分查找算法就能把时间复杂度降低到O(logn)。排序算法除了能够给数组排序之外,还能用来解决其他问题。比如快速排序算法中的Partition函数能够用来在n个数里查找第k大的数字,从而可以用O(n)的时间在数组中找到出现次数超过数组长度一半的数字。如果面试题是一个求最大值或者最小值的题目,则可以尝试用动态规划法或者贪婪算法,比如用动态规划法求出数组中连续子数组的最大和。 优秀的综合能力 在面试过程中,应聘者除了展示自己的编程能力和技术功底之外,还需要展示自己的软技能,诸如沟通能力和学习能力。随着软件系统的规模越来越大,软件开发已经告别了单打独斗的年代,程序员与他人的沟通变得越来越重要。在面试过程中,面试官会观察应聘者在介绍项目经验或者算法思路时是否观点明确、逻辑清晰,并以此判断他沟通能力的强弱。另外,面试官也会从应聘者说话的神态和语气来判断他是否有团队合作的意识。通常面试官不会喜欢高傲或者轻视合作者的人。 IT行业知识更新很快,因此程序员只有具备很好的学习能力才能跟上知识更替的步伐。通常面试官有两种办法考查应聘者的学习能力。第一种方法是询问应聘者最近在看什么书、从中学到了哪些新技术。面试官可以用这个问题了解应聘者的学习愿望和学习能力。第二种方法是抛出一个新概念,接下来他会观察应聘者能不能在较短时间内理解这个新概念并解决相关的问题。比如面试官要求应聘者计算第1500个丑数。很多人都没有听说过丑数这个概念。这时面试官就会观察应聘者面对丑数这个新概念,能不能经过提问、思考、再提问的过程,最终找出丑数的规律从而找到解决方案。 知识迁移能力是一种特殊的学习能力。如果我们能够把已经掌握的知识迁移到其他领域,那么学习新技术或者解决新问题就会变得容易。面试官经常会先问一个简单的问题,再问一个很复杂但和前面的简单问题相关的问题。这时面试官期待应聘者能够从简单问题中得到启示,从而找到解决复杂问题的窍门。比如面试官先要求应聘者写一个函数求斐波那契数列,再问一个青蛙跳台阶的问题:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶,请问这只青蛙跳上n级的台阶总共有多少种跳法?应聘者如果具有较强的知识迁移能力,就能分析出青蛙跳台阶问题实质上只是斐波那契数列的一个应用。 还有不少面试官喜欢考查应聘者的抽象建模能力和发散思维能力。面试官从日常生活中提炼出问题,比如如何判断5张扑克牌是不是顺子,考查应聘者能不能把问题抽象出来用合理的数据结构表示,并找到其中的规律解决这个问题。面试官也可以限制应聘者不得使用常规方法,这要求应聘者具备创新精神,能够打开思路从多角度去分析、解决问题。比如面试官要求应聘者不用加减乘除四则运算实现两个整数的加法。此时面试官期待应聘者能够打开思路,用位运算实现整数的加法。 小结 我们可以用下图来总结出应聘者需要具备的素质。 从上图可以看出,应聘者在面试之前需要做足准备,对编程语言、数据结构和算法等基础知识有全面的了解。面试时如果碰到简单的问题应聘者一定要注重细节写出完整、鲁棒的代码。如果碰到复杂的问题应聘者可以通过画图、举具体例子分析和分解复杂问题等方法先理清思路再动手编程。除此之外,应聘者还应该不断优化时间效率和空间效率,力求找到最优的解法。在面试过程中,应聘者还应该主动提问弄清楚题目的要求,表现自己的沟通能力。当面试官前后问的两个问题有相关性时,尽量把解决前面问题的思路迁移到后面的问题中去,展示自己良好的学习能力。如果能做到这么几点,那么应聘者顺利通过面试获得心仪的职位将是瓜熟蒂落的事情。

搜狗网测c++题目解析(报名搜狗网测的同学可以看下)

  今天我参加了搜狗题目的网测,题目是这样的,给你一个encode代码,要求你写出decode的代码: #include  #include   #include  using namespace std;  typedef signed char int8_t;  typedef unsigned char uint8_t;  typedef int int16_t;  typedef unsigned int uint16_t;  typedef long int32_t;  typedef unsigned long uint32_t;  typedef long long int64_t;  typedef unsigned long long uint64_t;  typedef int16_t intptr_t;  typedef uint16_t uintptr_t;  int encode(const void* raw_in,…

IT圈子里有哪些经常被读错的词

=====公司/产品名===== Youtube (You-tube [tju:b]) 念 优tiu啵 不念 优吐毙  Skype [ˈskaɪp] 念 死盖破 不念 死盖屁  Adobe [əˈdəʊbi] 念 阿兜笔 不念 阿斗伯  Chrome [krəʊm] 念 克肉姆  C# (C Sharp) 念 C煞破  GNU [(g)nuː] 念 哥怒  GUI [ˈɡui] 念 故意  JAVA [ˈdʒɑːvə] 念 扎蛙 不念 夹蛙  AJAX [ˈeɪdʒæks] 念 诶(ei)贾克斯 不念 阿贾克斯  Ubuntu [uˈbuntuː] 念 巫奔兔 不念 友邦兔  Debian [ˈdɛbiən] 念 得(dei)变  Linux [ˈlɪnəks] [ˈlɪnʊks] 两种发音 丽娜克斯 和 李扭克斯 都可以 LaTeX [ˈleɪtɛk]  [ˈleɪtɛx]  [ˈlɑːtɛx] [ˈlɑːtɛk] 雷泰克,拉泰克 都可以 (根据Knuth的建议,雷泰克斯和拉泰克斯不正确。而且LaTeX的重音是放在雷或拉上。感谢@Rio讨论。另外感谢发音大牛@梁海刚刚指出, [ˈlɑːtɛx] 注音符号里的x发的不是克斯的音,而是接近“巴赫”的那个赫。) GNOME [ɡˈnoʊm] [noʊm] 两种发音 格弄姆 弄姆 都可以 =====一般英语=====…

台湾科技产业行

今天我要介绍的是我们这次来台湾的导师傅楸善先生和他带我前往台湾的各个企业的行程。     傅教授是一个很有趣的教授,第一眼我看到他就觉得他的骨子里透着一股幽默感,这个在大学教授中是很少见的,特别是对于计算机的教授而言     废话少说,我来介绍一下我和傅教授的这些天的行程吧!   11年7月20日,4PM 新北市汐止区康宁街169巷21号13F 公司名称:源浩科技股份有限公司 网址:http://www.winstartek.com.tw/         源浩科技股份有限公司是一个以数码影像应用(Digital Image Processing, Real Time Automation Inspection)为主轴,自立研发自动化及生产线检测设备。  检测系统应用范围广泛,现有近百台使用于各生产线上。客户实绩如:达方电子、杜邦公司、3M、华新科技、南亚塑胶、台塑、顺昶塑胶、鼎基化学工业、光群镭射、四维企业、永丰余造纸、广源造纸、士林纸业、康那香、金居开发铜箔…等。另有一些客户基于业务机密无法一一列出。目前更积极致力于研发更为精密、快速之检测系统,并扩充硬件设备,以期能符合未来自动化产业之潮流。       傅教授在公司内做报告:     傅教授的实验室承担一个项目,用于用影像检测缺陷类型,包括检测白点,黑点,褶皱,白中带黑四种类型,使用类神经网络进行学习,并且进行分类和检测缺陷类型。     11年7月21日 1PM 晶睿通讯公司 新北市中和区建城路192号6楼 网址:http://www.vivotek.com/aboutus/overview.php?newlang=zh-cn   晶睿通讯成立于2000年2月,以技术为导向,致力于声音图像压缩处理、多媒体通讯及系统单晶片的研究与开发,多年来已成功开发并生产制造全系列安全监控系统产品,包括网络摄像机(Network Cameras),影音伺服器(Video Servers),影音解码器(Video Receiver)及图像管理软件(Video Management Software),并以自有品牌「 VIVOTEK 」在欧洲、美洲、东南亚、纽澳与中国建立经销通路体系。 在晶睿通讯公司内做报告    …

相机从raw格式到相片生成过程

      台湾那边的暑期项目马上就要开始了,在去台湾之前那边的导师让我做一个项目,就是通过raw格式转化到照片的处理过程,这个也是傅楸善教授的一个练功课,进入他们的实验室必须通过的一门“练功”的项目。     想要知道什么是raw格式以及如何从raw格式到照片,我们首先必须了解什么是raw格式以及从raw格式到照片所必须经过的所有过程.     raw格式是指从相机拍摄一个景象所得到的原始的数据,这个数据保存了包括CMOS或者CCD图像感应器将捕捉到的光源信号转化为数字信号的原始数据,RAW文件是一种记录了数码相机传感器的原始信息,同时记录了由相机拍摄所产生的一些原数据(Metadata,如ISO的设置、快门速度、光圈值、白平衡等)的文件。RAW是未经处理、也未经压缩的格式,可以把RAW概念化为“原始图像编码数据”或更形象的称为“数字底片”。      那么有些研究者会觉得奇怪,为什么相机要存储的是raw格式呢?如果从图像的性质而言,每一个pixel都是一个三维的强度信号,相机若是想要得到照片的话,其实直接得到图像而不是得到raw格式不是更好吗?问题不是那么简单。 raw格式的文件相比于图像文件而言的优点,主要包括一下几个方面:  ·1、RAW文件几乎是未经过处理而直接从CCD或CMOS上得到的信息,通过后期处理,摄影师能够最大限度地发挥自己的艺术才华。      2、RAW文件并没有白平衡设置,但是真实的数据也没有被改变,就是说作者可以任意的调整色温和白平衡,并且是不会有图像质量损失的。   3、颜色线性化和滤波器行列变换在具有微处理器的电脑上处理得更加迅速,这允许应用一些相机上所不允许采用的、较为复杂的运算法则。     4、虽然RAW文件附有饱和度、对比度等标记信息,但是其真实的图像数据并没有改变。用户可以自由地对某一张图片进行个性化的调整,而不必基于一、两种预先设定好的模式。    5、也许RAW最大的优点就是可以将其转化为16位的图像。也就是有65536个层次可以被调整,这对于JPG文件来说是一个很大的优势。当编辑一个图像的时候,特别是当你需要对阴影区或高光区进行重要调整的时候,这一点非常重要。   也就是说,对于一个相机而言,保存其原始的格式的重要性其实是不言而喻的,因为这样做可以保存下可供未来进行进一步处理的数据。   那么,从raw数据格式到普通的图像格式(例如jpg格式,bmp格式)需要经过多少步骤呢?     看上去确实有点乱,不过还好,我来一一解释一下: Optical black:        是指未感光但是仍然有值的部分,这个很让人费解,通常而言,有光学信号才会导致电流的产生,但是由于相机本身存在一定的电流信号,使得在有些像素中,即使未感光,也会导致暗电流的生成,使得像素上产生值,因此我们首先要进行的步骤,就是使用Optical black,将暗电流产生的信号进行消去。 White balance:        对于一个相片而言,是非常重要的,raw格式的文件存储的格式只是一个图像的信号格式,但是,却不一定得到最好的图像效果,人眼其实是一个非常精妙的东西,它通过瞳孔的放大和缩小,可以适应不同的亮度环境,将所看见的视像调整到最好的效果,同样,例如我们长时间进入一个偏向红色的环境中,可以感觉到红色其实会变得不怎么红,别的颜色也会导致这样的情况。这个其实就是人的眼睛的一个Automatic White balance的功能,但是对于照相机而言可就没有那么那么厉害了,相机是死的,因此他不可能做到人眼所能做到的对图像的Automatic White balance的效果,因此,我们必须要设计一种算法,对图像进行一个White balance的功能。…

台湾!台湾!arrive in 台湾和台大校史馆行

      博客好久没有更新了,主要是因为之前一段时间先忙期末考试,又忙着做台大这边的一个数位相机竞赛,弄得焦头烂额之后总算台湾那边可以成行了,不过傅教授给我安排了很多参访的任务,弄到今天才告一个段落~~~       16号的时候搭上了前往台北的飞机,说实话心里真是百感交集,终于可以踏上宝岛台湾了,不过临走时其实还差点虚惊了一场,因为之前申请前往台湾的时间是16日,而我八号才拿到的批件,因此申请了加急15号才能拿到,所以直到临行前的最后一天才拿到了前往台湾的通行证,真的是虚惊一场啊。       16号启程~~~南京禄口机场~~ 经过两个小时的飞行,我们终于到达了目的地:台湾桃园机场: (缺图。。。伤不起啊,到了那边来不及拍了) 从桃园进入台北之后唯一看见的房子就是台北101了,因为进入台北之后,你会发现其实这边的房子其实并不高,因为台湾多地震,所以台北的房子其实都比较矮,普通的房子也就五六层,最高的十几层,所以远眺整个台北市,台北101大楼显得非常的醒目,而别的房子则显得相形见绌了。   宿舍远眺窗外,高楼不多,多为五六层的房子,看上去也有点年代了,楼下还有棚户房,哈哈,这里是台湾,不能随便拆!! 好好地休息了一晚,第二天去晃荡了一整天,买了些必备用品,包括一次性的充电器(因为台湾的是110V的,我带过来的充电器无法使用), 台湾的物价确实很贵,我在机场换的1000块人民币(4000多台币,结果没有几天就全部花光了)哦哦,钱啊,伤不起~~ 17日我们前往国立台湾大学的主校区,我们首先来到的是台大校史馆:   台大校史馆,开场篇(开场在台大) 台湾大学几十年前的准考证原始件: 亲爱的傅斯年校长   台北帝国大学时期   台湾大学动物博物馆     恐龙骨头标本 台湾大学自制的太阳能车   据说坐在这个位置上的人成绩能变好,真的这样吗? 引导的同学为我们介绍台大的最新的研究成果 红火蚁防治 台湾大学的民主运动纪实 台湾同胞保卫钓鱼台纪实   走出台大校史馆。来到台大椰林大道,美丽的蓝天与椰树:   欢迎午餐,Michelle Yun 为我们介绍这次项目的情况   先写到这里了,之后的照片我会慢慢release出来的,哈哈

美国本科生最向往的13大实习公司(薪金羡慕死我啦!!!!)

  那些大学里最聪明的家伙暑假的时候都上哪儿去了?他们很有可能正与久经锻炼的职业经理人们一同工作,进入大公司实习是每一个美国大学生最向往的暑期生活方式。因为对本科生来说,实习可能是在职业领域里试水的第一次机会。不论你在学校有过多少实践活动,没日没夜地学习,没有什么能像在公司实际工作那样能够让一个学生为自己的职业生涯做准备。       有些学校会把实习作为毕业的必要条件,实习也会有学分。所以大部分学生会渴求那些仁慈的HR给个机会,即使不要报酬也愿意到公司里去复印资料,端茶送水。不过,当一些幸运的本科生发现自己进入了那些被美国《商业周刊》选为50大最佳实习的公司工作时,赶紧打起精神,再苦再累也得撑过去!在这个名单上的都是各大行业里最顶尖的公司,排名是按照一系列的评价标准:薪水、拿到全职工作的学生比例以及学生的反馈。   我只摘录了这个榜单的前13位,想要看最完整的名单吗?你可以点击点击这里!   1.Deloitte & Touche(德勤,世界四大会计事务所之一)每年超过2200个实习机会,每小时实习薪金$24.50,73%的实习生能得到全职机会,其中的82%会接受。 2.KPMG(毕马威,世界四大会计事务所之一),每年2200个实习机会,每小时$24.80的实习薪金,90%的实习生能拿到全职工作,其中93%的会接受。  3.Ernst & Young(安永,国际四大会计师事务所之一,全美第二大会计师事务所),每年超过2500个实习岗位,每小时$22,92%的实习生能得到全职工作机会,其中92%会接受。 4.Procter & Gamble(宝洁公司,目前全球最大的日用品公司之一)每年超过490个实习岗位,每小时$26,83%的实习生能得到全职工作机会,其中92%会接受。 5.PriceWaterhouseCoopers(普华永道,国际四大会计师事务所之一),每年有超过2300个实习岗位,每小时的实习薪金是$23.80。89%的实习生有机会的到全职工作,其中93%的学生会接受这份工作。  6.Goldman Sachs(高盛,国际领先的投资银行和证券公司)每年1000个实习机会,每小时$29的实习薪金,66%的实习生能拿到全职工作,其中66%的会接受。 7.Target(塔吉特公司,美国第四大零售商)每年1000个实习机会,每小时$15.5的实习薪金,71%的实习生能拿到全职工作,其中74%的会接受。    8.UBS(瑞银集团,欧洲最大的金融控股集团) 每年290个实习机会,每小时$29的实习薪金,68%的实习生能拿到全职工作,其中91%的会接受。  9.Accenture(埃森哲公司,全球最大的管理咨询公司和技术服务供应商)每年198个实习机会,每小时$21的实习薪金,95%的实习生能拿到全职工作,其中85%的会接受。 10.General Electric(通用电气,世界上最大的提供技术和服务业务的跨国公司)每年3000个实习机会,每小时$20的实习薪金,40%的实习生能拿到全职工作,其中90%的会接受。  11.Walt Disney(华特迪斯尼公司,世界上第二大传媒娱乐企业)每年1500个实习机会,每小时$12.9的实习薪金,7%的实习生能拿到全职工作,其中100%的会接受。  12.Microsoft(微软,目前是全球最大的电脑软件提供商)每年500个实习机会,每位实习生的平均总薪金是3万美金,80%的实习生能拿到全职工作,其中89%的会接受。  13.JPMorgan Investment Bank(摩根大通,全球历史最长、规模最大的金融服务集团之一)每年245个实习机会,每小时$28.85的实习薪金,75%的实习生能拿到全职工作,其中85%的会接受。

王崇骏老师是个好老师~~

     昨天小百合上面出了一个贴,说的是对于王崇骏的DSP的课的吐槽,说实话我觉得王崇骏老师是个好老师,不过有的计算机系的同学不这么认为,特地在百合Computer版对于王崇骏老师的课涂了下槽,原帖是这样的:                                                           只是吐槽而已 加一点怀疑       关于历年考试试题 有题目年年考 如温度测量 ;题目大多表述不清 如“幅频响应”这类词儿都不知哪杜撰出来的 ;有些试题很蛋疼 如频率响应表达式H(e^jw)=cos(2w) , 完全不能理解表达式竟然不带j ,还要画出相位响应的草图 难道画个实数轴? 最气愤的是考前不组织答疑 有人发邮件求往年试卷答案竟然说没有 显然为他偷懒而复用往年蛋疼题创造了条件…

刘少奇、周恩来、毛泽东的ERP实施方法

刘少奇、周恩来、毛泽东的ERP实施方法

  今天看到有一篇关于伟人们的ERP实施方法,觉的很有意思,就摘录下来: ——————————————- 在罗斯.特里尔的《毛泽东传》中,有这样一段:      毛泽东……提了一个问题:“你们怎样使猫吃辣椒?”      党的第二号人物刘少奇首先说:“这还不容易,你让人抓住猫,把辣椒塞进猫嘴里,然后用筷子捅下去。”      对于这种莫斯科式的解决方法,毛泽东极为厌恶地摆摆手,“决不能使用武力……每件事都应当是自觉自愿的。”周恩来一直在听着,毛泽东要周恩来谈谈看法。      “先让猫饿三天,”这位善于走钢丝的人回答,“然后,把辣椒裹在一片肉里,如果猫非常饿的话,它会囫囵吞枣般地全吞下去。”      与不同意刘少奇的办法一样,毛泽东也不赞成周恩来的办法。“不能用欺骗手段——决不能愚弄人民。”那么,毛泽东自己的策略是什么呢?“这很容易(至少这口气与刘少奇相同),把辣椒擦在猫背上,它感到火辣辣,就会自己去舔掉辣椒,并为能这样做感到高兴。”     在 ERP系统实施的 过程中,顾问们经常遇到一些这样的人,他们就是不肯配合实施,或者不肯描述流程、或者不肯整理数据,或者,干脆拒绝学习新的系统,认为这比不上原有的信息 孤岛式的系统,甚至比不上手工操作起来更方便。就像伟人们解决猫吃辣椒的问题,顾问们解决这些拒绝合作者的手段也主要有这样三种:      第一种,刘少奇式。不做?真的不做?好,我把计划、要求拿给你的领导,告诉你的经理,这个同志不是好同志,他拒绝完成我们的项目任务,要求他的经理下死命令,强制其完成工作。      第二种,周恩来式。不做?为什么呢?新的系统多好啊,有了它你就可以轻松多了,你想要什么报表有什么报表,想要怎样计算它就可以怎样计算,什么流程、规 则、必备的基础数据,只要你完成我当前安排给你的工作,未来,全交给系统好了,你就等着干拿工资好了,哄着完成任务。      第三种,毛泽东式。不做?那是因为你没有意识到ERP可以提高你的工作效率和工作质量,不信,我们现在就按照ERP标准来要求你的工作试试,我上午10点要一次报表,下午2点再要一次报表,就让你随时统计、随时报告,完不成?那你还不想办法赶紧把ERP用起来? 孰优孰劣?不一定。可能有人认为,某些人就要强迫,某些人就要哄骗,但老王认为,只要可能,还是毛泽东式实施法最有效果。(又是老王的文章,不知道这个老王是不是隔壁老王?) ———————————————- 这个比喻非常好,但在这个话题当中,我觉的需要思考几个问题: 1、 一定要给猫吃辣椒吗?我们都知道猫是不吃辣椒的,如果非要让他吃的话,我们要想一想他会不会消化不良?甚至有可能出现了猫吃辣椒立即毙命的情况呢?猫要吃 东西,吃鱼、吃老鼠没有问题,但是不是吃辣椒,首先要想好。这与企业上ERP是一样的,企业为了生存和发展要上ERP这是对的,但不能说某个企业就一定要 上什么什么样的ERP系统,因为首先要看这个ERP是不是适合企业的应用,要为企业找到合适的ERP产品才行。 2、 假设猫是能吃辣椒的,吃了可能对身体是有益的,但只是品味不好(太辣),不爱吃,那怎么办?这个时候应该知道是“良药苦口”的方式了,我同意上述文章中的 观点,对于不同的人,就需要采用不同的方式来应对,水无常态,式无定式,这也是我们在做项目管理时进行干系人管理的核心要点:抓住目标不放,但不要拘泥于 同一种形式与方法。 3、猫吃辣椒是否会引起消化问题,会不会让猫辣的胃疼,要不要 采取一些消化措施?因为之前没有吃过,吃完之后会不会有不良反应呢?比如我们去医院打针时,知道打针是为了治病的,但有些药物是容易引起皮肤过敏的,这个 时候医生就得要有“预案”了。如我们是不是给猫准备一些胃药之类的呢?这个问题推及到ERP系统实施工作来,我们需要明确的是ERP系统的上线与应用从长 期来说是能够为企业带来效益提升的,但在短期,企业可能在应用过程中出现不适,如员工在新的系统环境下协作起来非常吃力,手工数据与系统数据出现不匹配的 情况,这就要求ERP实施顾问能够面对这些问题做好“预案”,让我们的企业在ERP系统应用过程中可以平滑过渡,达到胜利的彼岸。

软件开发七宗罪

软件开发七宗罪

  软件开发第一宗罪:欲望(过度设计) 现代编程语言趋向于不断增加更新的功能让其臻于成熟。程序员们一层一层地往上堆叠抽象的代码,用新设计的关键字和结构来增加代码的可读性和可重用性——只要你肯花时间去学习如何正确地使用它们。 与此同时,编程的原则在这些年里有所改变。今天,你可以饱览到成千上万的设计方案和模式,而且每几个月就会有人想出新的开发方案。此外,开发人员总是信誓旦旦地宣称这些开发方案会让你成为程序员中们眼中的佼佼者。 但是纸上谈兵往往不见得在实际操作中奏效,这个道理很简单,打个比方来说就是你可以去做某些事情但是并不意味着你应该去这么做。就像编程大师Joel Spolsky所说的,那些盲目迷恋自己工具的程序员们都不可避免地忽略了这一点,甚至于最简单的项目也可能葬送进开发的地狱。所以,必须抵制这种不可取的冲动,那么首先要做到的就是坚持你最初的设计方案。 软件开发第二宗罪:暴食(不进行重构) 没有比开发软件更令人可喜的事情了。一旦你有一个正在开发的产品,就会很容易受到开始筹划下一次迭代的引诱。新产品应该具备什么样的新特征呢?我们在第一轮实施的时候没有注意到哪些问题? 人们总是很容易忘记代码很少能在运行的时候保持最佳状态。然后,当新功能不断地累积直至几个轮回的发展之后,程序员们往往会倾向于复合过去发生的错误,这样就导致了一个臃肿、脆弱的代码基础,难以进行有效地维持。 所以,在添加新功能之前尽量克制自己,对现有代码的质量和可维护性进行评估。对于每一次新一轮的开发,都必须将代码重构列入预算范围之内。用户可能只会关心每一个版本的新功能,但是从长远来看,他们一定会更希望你保持产品的精炼性。 软件开发第三宗罪:贪婪(团队之间的竞争) 对于财富和权利的过度欲望——要不然如何解释程序员与自己同僚之间竞争的动机?当一个团队得到了其他团队泄露出来的电子邮件,就开始进行闭门会议和开发。接下来的事情你应该知道,这个团队编写了一个代码库,它已经超越了其他团队已经完成的编码库功能的一半以上。 开发团队很少会出于恶意来进行重复的工作,但是他们往往缺乏明确的目标和责任感。得到的结果则是多余、无力的代码库,更不要说预算的损失和之前付之一炬的努力。经营开发项目的首要任务之一应该是了解其他团队正在做什么,然后所有的团队都朝着一个共同的目标去努力。分享与共享应该成为开发人员的座右铭。 软件开发第四宗罪:懒惰(不验证输入) 基本编程容易犯的错误清单很长,但是没有验证输入这样的错误非常低级以至于不能不从别的角度来思考犯这类错误的原因。这个看似低级的错误仍旧出现在许多经验丰富的程序员编写的代码中,这一点十分令人费解。然而,很多普通的安全漏洞,从缓冲区泛滥成SQL注入攻击,却可以直接追溯到用户输入的代码没有进行正确格式验证这一点。 现代编程语言提供了许多工具来帮助程序员来避免类似情况的发生,但是他们必须对其使用得当。切记,一个JavaScript的Web表单验证输入可能很容易被在浏览器中禁用的JavaScript回避,或者干脆不使用浏览器进行访问。输入验证应该是你应用程序的核心部分,而不是在用户界面上煞费苦心。如果做不到这一点只能归咎于程序员的懒惰了。 程序开发第五宗罪:愤怒(不对你的代码进行注释) 对于你的同僚而言,有什么行为能比不对你的代码做出任何注释这种行为更具敌意?我自己写的我当然知道:精心编写的代码是它本身最好的文档资料。那么,你知道吗,其他人能看懂吗?其实这些你自认为值得骄傲的代码可能并非天衣无缝。 程序员们自己很可能很快就会遗忘他们现在所写的代码,但是这些代码将在他们离开以后继续存在很长一段时间。对于取代他们的程序员而言,要想搞清楚每一个代码真正代表什么是一件吃力不讨好的工作。鉴于此,在你编写程序的时候,行行好吧,多给他们留下一些暗示。 但是请记住,难以理解的注释或者注释过多都与不做任何注释的性质同样恶劣。类似于“这已经损坏”或者“不要碰这个”的注释对于任何人都没有什么帮助。也不要做多余的评论来解释简单的操作,比如变量初始化。代码就是其本身最好的文件材料,所以出现的注释评论应该尽可能解释原因和本质。 软件开发第六宗罪:嫉妒(不使用版本控制) 也许你有理由对于你的项目不推行版本控制。也许一开始你的项目很小。但是今天,功能强大并且高效的版本控制系统已经可以免费进行使用。服务供应商甚至可以对分布式项目提供价格低廉的托管代码服务。所以没有理由不在一开始就使用一个代码库,即便是再小的项目也是如此——除非,你无法容忍除了你以外的任何人实施代码变化。 软件开发第七宗罪:骄傲(不进行单元测试) 你往往会认为自己的编程工作相当出色,但是你又如何知道自己做的到底是否唯美无缺呢?有什么指标来对你的工作好坏进行衡量吗? 除非你已经在特定的测试环境下对你的代码进行了验证和测试,否则你就不能证明它能像广告中说的那样完美无瑕。但是太多的开发人员并不对他们的代码进行单元测试。他们声称花时间进行测试就没有时间推行新功能了。事实上,一些开发人员甚至不将质量测试写入他们项目的预算范围。 那么我又能说什么呢?只能期待他们在品尝失败的滋味之前将这股傲气抛之脑后。一旦存在缺陷的代码抵达客户手中的时候,再撤销它们就未免太迟了。在进行代码传输之前,进行越多的单元测试,就能在今后越多地避免不必要的损失。 原文标题: The 7 deadly sins of software development 关于七宗罪 贪婪,失控的欲望,是七宗罪中的重点。其他的罪恶只是无理欲望的补充。 色欲:肉体的欲望,过度贪求身体上的快乐。 饕餮:贪食的欲望,浪费食物或者过度放纵食欲,过分贪图逸乐皆为饕餮一罪。 妒忌:财产的欲望,因对方拥有的资产比自己多而心怀怨恨(此处的资产并非限定于财产,更多的指才能、才华) 懒惰:逃避的欲望,懒惰及浪费所造成的损失为懒惰一罪的产物。 傲慢:卓越的欲望,过分自信导致的自我迷恋,以及过分渴求他人的关注为傲慢。 暴怒:复仇的欲望,源于心底的暴躁,因憎恨产生的不适当邪恶念头。 七宗罪在拉丁语中为: “superbia”,“invidia”,“ira”,“accidia”,“avaritia”,“gula” and “luxuria ”

Calendar

2012 年五月
« 十    
 123456
78910111213
14151617181920
21222324252627
28293031  
网站地图