时空主站

嗨,我是时空,一名来自中国的开发者。

0%

我以前写过一篇“我是怎么招聘程序员的”的文章(在CSDN那里有很多人进行了回复)。今天,我想再谈谈关于招聘和面试这方面的东西,主要是以下这些原因:

所以,我很想把自己的这些新的想法再次写下来的。还是和以前一样,这篇文章同样是献给面试官的。我认为,面试的好坏完全在面试官而不是面试的人。下面是我对“我是怎么招聘程序员的”一文中的一些加强性的观点。(关于一些点评,请参看本文下篇

为了让我的文章有连续性,请允许我重申一下前文的几个重要观点。

  • 只有应聘者真实和自然的表现,才能了解到最真实的东西
  • 重要的不是知识,重要的是其查找知识的能力
  • 重要的不是那个解题的答案,而是解题的思路和方法

操作,知识,经验,能力

我们有很多的面试官似乎分不清,什么是操作能力,什么是知识,什么是经验,什么是能力,这导致了我们的面试官经常错误地对面试者下结论,我认为分不清这些事的人是没有资格做面试官的。所以,我有必要在这里把这个问题先讲清楚。

  • 操作

    。我们的面试官分不清楚什么是操作技能,什么是知识,他们甚至认为操作技能就是知识甚至经验。比如他们会 问如下的问题,请问Java中的 final是什么意思?怎么查看进程的CPU利用率?怎么编写一个管道程序?怎么查看进程的程序路径?VI中的拷贝粘贴命令是什么?包括面向对象的XX模 式是什么。等等。我以为,

    这些能够通过查况相关操作手册或是能够google到的东西只能说明这个人的操作技术,并不能说明他有知识或有经验

  • 知识。知识是一个人认知和学习的体现,可能会是一些基础概念和知识。比如这些问题:TCP和UDP的优缺点比 较,链表和哈希表的优缺点的比较。什么是堆什么是栈?进程间是怎么通信的?进程和线程的优缺点?同步和异步的优缺点?面向对象的XX设计模式的主要原则是 什么,等等。我以为,“知其然”只是操作技术,“知其所以然”才是真正的知识。知识不够并不代表他不能工作,会操作技能就可以应付工作,但是知识的欠缺一定会限制你的经验和能力,同样会影响你的开发质量。

  • 经验。经验通常跟一个人的经历有关系。一个人的知识范围,一个人经历过的事,通常会成为一个人经验的体现。面 试中,我们会问这些问题:你解决过最难的问题是什么?你是怎么设计这个系统的?你是怎么调试和测试你的程序的?你是怎么做性能调优的?什么样的代码是好的 代码?等等。对于工作年限不长的人来说,经历和做过的事的确会成为其经验的主要因素,尤其是业务上的有行业背景的东西。但是,我更以为,经验可能更多的是你对知识的运用和驾驭,是你对做过事情的反思和总结,是你对他人的学习,观察和交流

  • 能力。一个人的能力并不会因为知道东西少而不行,也不会因为没有经验而没有能力。一个人的能力是他做事情的一种态度,性格,想法,思路,行为,方法和风格只要有热情,有想法,有好的行为方法,以及好的行事风格,那么知识和经验对他来说只是一个时间问题。 比如:学习能力,专研精神,分析能力,沟通能力,组织能力,问题调查能力,合作能力等等。所以,对于一个新手来说,也许他的知识和经验有限,但并不代表他 能力上有问题,但是对于一个老手来说,如果其存在知识和经验欠缺的问题,那么通常都是其能力的问题。你可能暂时怀才不遇,但我不相信你会长期怀才不遇。如 果是的话,那么你必然些问题其让你的能力发挥不出来。而此时,“没有经历过”只会是你“没有能力”的一个借口。

我不否认这四样东西对于一个优秀的程序员来说都很重要。但是,通过上述的分析,我们可以知道,能力和经验和知识需要分开对待。当然,这些东西是相辅相成的,你的能力可以让你获得知识,你的知识可以让你更有经验,你的经验又会改变你的想法和思路,从而改善你的能力。在面试中,我们需要清楚的认识到,应聘者的操作技能,知识和经验只是其能力的必要条件,并不是充要条件,而我们更应该关注于应聘者的能力

  • 如果面试只是考查这个人的操作技能的话,那么这个面试完全失败。这是一个没有资格的面试官。
  • 如果面试只是在考查这个人的知识和经验的话,那么成功了一半。因为你了解了基础知和做过的事,但这并不代表你完全了解他的真正能力。
  • 如果你能够在了解这个人的知识和经验的过程中重点关注其能力(态度、性格、想法,思路,行为,方法和风格),并能正确地评估这个人的能力,那么你的面试算是非常成功的。

也许用这四个词来描述定套东西并不太合适,但我相信你明白我想表达的。另外,我想说的是,我们不是出个题来考倒应聘者,而是要找到应聘者的亮点和长处

不要肤浅地认识算法题和智力题

很多公司都会在面试的时候给一些算法题或是一些智力题或是一些设计题,我相信算法题或是智力题是程序员们在面试过程中最反感的事了。很多人都很BS面试官问的算法题,因为他们认为面试官问的这些算法题或智力题在实际工作当中用不到。但我想在这里说,问难的算法智力题并没有错,错的很多面试官只是在肤浅甚至错误地理解着面试中的难题的目的。他们认为,能做出算法题和智力题的人就是聪明的人就是有能力的人,这种想法实在是相当的肤浅。

其实,能解难题并不意味着这个人就有能力就能在工作中解决问题,你可以想想,小学奥数题可能比这些题更难,但并不意味着那些奥数能手就有实际工作能力。你可 以想一想你们班考试得高分的同学并不一定就是聪明的人,也不一定就是有能力的人,相反,这样的人往往者是在应试教育下培养出来的书呆子。

所以,我认为解难题的过程更重要,你要主要是通过解题查看这个应聘者的思路,方法,运用到的知识,有没有一些经验,和你一起交互时和沟通得是否顺畅,等等,这些才是你重点要去观察的。当然,最终是要找到答案的。

我想,让面试者解决一个难题的真正思路是:

  • 看看他对知识的应用和理解。比如,他是否会用一些基础的数据结构和算法来解决算法题?
  • 看看他的整个解题思路和想法。答案是次要的,他的想法和行为才是重要的。
  • 看看他是如何和你讨论交流的。把面试者当成你未来的同事,当成你的工作伙伴,一起解题,一起讨论,这样可以看看大家是否可以在一起工作。

这些方面才是考查应聘者的能力(思路,方法、态度,性格等),并顺带着考查面试者的经验和知识。下面是一些面试的点:

  • 应聘者在解算法题时会不会分解或简化这个难题。这是分析能力。
  • 应聘者在解算法题 时会不会使用一些基础知识,如数据结构和基础算法。这是知识。
  • 应聘者在解题 时和你讨论的过程中你有没有感到应聘者的专研精神和良好的沟通。
  • 应聘者在对待这个算法题的心态和态度。如,面试面是否有畏难情绪。
  • 应聘者在解题时的思路和方法是否得当,是否是比较科学的方法?
  • 等等。

在解难题 的过程中考查应聘者的能力才是最终目的,而不是为难应聘者,不然,你只是一个傲慢而无知的面试官

模拟实际中的挑战和能力

作为面试官的你,你应该多想想你的工作,以及你的成长经历。这会对你的面试很有帮助。你在工作中解决问题的实际情况是什么?你写代码的实际情况是什么?你的成长经历是什么?你是怎么获得知识和能力的?你喜欢和什么样的人工作?相信你不难会发现你工作中的实际情况和面试的情况完全是两码事,那么,你怎么可以用这种与实际情况差别那么大的面试来评估一个人的能力呢

所以,最为理想的面试是一起工作一段时间。当然,这个在招聘过程中,操作起来几乎不可能,因此,这就要求我们的面试官尽可能地把面试的过程模拟成平时工作的 过程。大家一些讨论来解决一个难题,和应聘者一起回顾一下他已经做过的事情,并在回础的过程中相互讨论相互学习。下面举一个例子。

我们知道,对于软件开发来说,开发软件不难,难是的下面是这些挑战:

  1. 软件的维护成本远远大于软件的开发成本。
  2. 软件的质量变得越来越重要,所以,测试工作也变得越来越重要。
  3. 软件的需求总是在变的,软件的需求总是一点一点往上加的。
  4. 程序中大量的代码都是在处理一些错误的或是不正常的流程。

所以,当我们在考查应聘者的代码能力时候,我们为什么不能模拟这样的过程呢?比如,让应聘者实现一个atoi()的函数,实现起来应该很简单,然后 不断地往上加新的需求或新的案例,比如:处理符号,处理非数字的字母的情况,处理有空格的情况,处理十六进制,处理二进制,处理“逗号”,等等,我们要看 应聘者是怎么修改他的代码的,怎么写测试案例的,怎么重构的,随着要处理的东西越来越多,他的代码是否还是那么易读和清晰。如果只是考查编码能力,一个小时,就问这一个问题,足矣。真正的程序员每天都在和这样的事打交道的。

如果要考查应聘者的设计能力,同样可以如法泡制。不断地加新的功 能,新的需求。看看面试者的思路,想法,分 析的方法,和你的讨论是否流畅,说没说在 点上,思想清不清晰,会应用什么样的知识,他在设计这个系统时的经验是会是什么样的,面对不断的修改和越来越复杂的需求,他的设计是否还是那么好?

当然,因为时间比较短,所以,你不能出太复杂的问题,这需要你精心设计一些精制的有代表性的问题。

在上篇中,我们说到了一些认识人的方法(操作,知识,经验,能力),还有一些面试的方法(算法题,实际生产活动中的挑战),下面我们来说说,面试的风格,还有一些点评。

把应聘者当成你的同事

有些公司的面试官,在面试过程中问你一个算法题,然后等着你解答了,如果你给出一个答案,然后就会问你有没有更好的答案,如果你给出了正确的答案,他们就会问你一个更难的问题,如此循环下去。他们基本上很少给你提示,甚至不停地质问你,挑战你,搞得应聘者很紧张。

另外,有很多问题是没有标准答案的,或者说是,同一个答案的描述方法有多种,很多面试官会觉得你没有回答到他想要的答案,因此表现得有对你不屑,并表现出你不行的样子,并觉得你的能力有问题。真是可笑了。比如我一个朋友在回答什么是异步的问题时,举例说明了异步调用就是不能处理完就返回,并且需要传递一个回调函数给调用方以便完成后回调通知结果。这样的回答并没有错,但是这并不符合面试官心里想要的答案,面试官对此并不满意,进而认为我这个朋友还需要去多读读书。

我相信大多数面试官都会这样干的。我想问问这样的面试官,你们有没有用面试的方式对过你的同事?在你的工作场景中,你会不会用面试的风格和你的同事进行交流和说话?不妨让我们来问我们自己下面几个问题:

  • 你在工作当中遇到难题时你是怎么解决的?你会和人讨论吗?你只用15分钟就能得出最优解吗?
  • 你在工作当中解决难题时是否会有一个人在旁边质问你并给你压力吗?
  • 你在工作当中会为难你的同事吗?会让你的同事紧张吗?你觉得在紧张的状态下能做好工作吗?
  • 你在工作中觉得同事的回答并不是你想要的答案,不是符合你的答案,你会认为你的同事不行吗?
  • 你的成长过程是什么样的?在是压力和天天被人质问的情况下成长的吗?
  • 大家都知道学校里应试教育的弊端,你觉得你的面试是不是一种应试呢?

(看看这么多的应聘者们都在做各种各样的算法题,这不就是一种应试吗?)

想一想你的日常工作,问自己一下上面这些问题,想一想你自己的成长过程,想一想你和你的同事是怎么相处的,想一想你的日常工作中是什么样的,相信你自己也能得出结论的。

如果你把应聘者当成自己未来的同事,那么你的面试会有下面的收获:

  • 面试的气氛会很不错,应聘者会放松,表现自然,更接受于真实的状态。
  • 面试中的交流和互动(而不是一问一答)会让你更全面的考查和了解一个人。
  • 非应试的面试,会让你了解得更多。
  • 真实的了解一个人,你才能做出真正正确的结论。

向应聘者学习

下面有几个观点

  • 面试的过程是一个相互学习的过程,并不是你为难面试者的过程。
  • 一问一答是很一种呆板死板的过程,相互讨论相互学习,有良好的互动才是好的面试过程。
  • 面试官要证明的不是你有多强有多聪明,而是要挖掘应聘者的优势和能力。
  • 面试官用为自己的问题预设好一个标准答案,看看应聘者能为你带来什么。
  • 向来应聘的人学习,而不是刁难。

无论你多牛,要难倒你实在是太容易了。出难题不是目的,难倒人也很容易,出难题只不过是用来了解应聘者能力的一个手段,而不是面试的全部

我不知道你喜欢不喜欢一些竞技类的运动?比如踢球,打篮球,羽毛球,下象棋等,你一般想和什么样的人玩?是差的,还是强的?所以,能够从面试者那里学到东西,喜欢和面试者一起工作,这才是面试真正的目的

对于一个团队来说,如果大家都是一样的想法,一样的主张,一样的倾向,那么这个团队最终会是一个闭塞的团队,你如果不能真正接纳不同想法的人,不同主张的人,那么你也将失去进步的机会。如果你的团队总是在招入和你一样的人,那么你的团队怎么可能会有out-of-box的想法呢?世界因为不同而美好

另外,对于公司来说,如果你招进来的人还不如已经有的人,作为一个公司,你又怎么能有更好的人让你的公司进步呢

所以,面试应该是向面试者学习的一个过程。当然,如果你从他身上学不到什么,那么你就教他一些吧。这样,就算是面试不通过,面试者也会欣然接受的。不然,让面试者产生一些负面情绪,出去说一些不好的话,也有损你和公司的形象。

一些相关的点评

下面是我根据酷壳的一些面试题的文章后的回复、还有我朋友的经历,还有这篇有关豆瓣的产品经理的这篇文章的一些点评。大家可以看看我从这些地方看到东西靠不靠谱。

酷壳的面试题中的答复

先说酷壳的那篇“火柴棍式的面试题”,这个面试题其实很没什么意思。主要考查你对代码逻辑的了解程度。因为设置了回复可见答案,所以这篇文章的回复量达千把条。从回复中,我看到:

  • 一些朋友想不出来就直接看答案了。我可以看出,有一些朋友习惯获得知识,而不习惯独立思考。甚至有畏难情绪,从另一方面来说,可以看出我国的教育还真不是一般的差。
  • 一些朋友想不全。从这点来看,我觉得很正常,尤其是想出两种来的,我可以感觉到他们的努力思考了,可能还做了一些尝试。挺不错的。可惜我看不到你思考的方式,是在纸上画了画,还是编译了个程序跑了跑,还是别的什么。这样我会了解你更多。
  • 一些朋友给出的答案中有错的。这说明了这类朋友可能不喜欢做测试,时常想当然,或是做事比较冲动,并不足够严谨。这么简单的程序,验证能花多少精力呢?
  • 还有少数的朋友没有看明白题目要求。这说明了这类朋友太粗心了,在工作当中可能会表现为误解需求和别人的话。沟通有问题。

再说说那篇“火车运煤”的问题,这个面试题我觉得主要是看看大家的解题思路,表达能力。

  • 首先,我很惊喜有人很快就用数学做了解答,很不错,这个人的数学功底很不错。能用数学解题的人一般来说都是算法比较强的人。
  • 有人说抱怨我没有说火车可以调头回去,所以没有想到这样的方法。如果是在面试中我会做提示的。我不会因为你不知道调头这个潜规则而否定你的。当然,如果你能想到的话说明你的脑袋还是比较灵的。
  • 还有很多人说他的方法比较土,只运了400吨煤,416吨的或333吨,一看就是没有看提示的,我觉得这些人能够通过独立思考找到方法,这类的人其实已经不错了。顺着这个思路优化也只是时间的问题了。
  • 更可喜的是,我看到了有一些朋友在看到别人的更好的方法后和自己的方法进行了比较,并找到了为什么自己的方法不如他的原因。这样的人我认为是懂得“总结”和“比较”的,这样的人总是在不断地学习和改善自己的。
  • 还有人说到了动态规划,如果是在面试的时候,我很想向这位朋友学习一下用动态规划来解这题。
  • 还有朋友说到了火车调头只能在有站的地方。这个朋友一看要么就是搞需求分析的人,要么就是较真的人。需要进一步了解。但不管怎么样,这样的朋友的观察能力是很不错的。
  • 还有一些朋友给出的答案是正确的。但是表达方面比较复杂,有些没有看懂。可见,解题 的能力是有的,只是表达能力还有待提高。

豆瓣产品经理的面试

再说说豆瓣上的这篇文章,那篇文章里,面试官问了一个比较大的问题,那是仁者见仁,智者见智的问题,并且面试官并不满意应聘者给出的答案,并在用其主观意识强加一些东西给应聘者,并不断地和应聘者纠缠。后来,面试官回复到“重点测了两个问题:一是判别事情的标准和方法;二是在多种PK下产品经理的压力反应”。

下面是我观察到的:

  • 其一、这种似事而非的仁者见仁,智者见仁,一万人有一万个答案。所以,这种怎么答都可以的问题是很难有标准的,我认为豆瓣的面试官以这种问题来考查面试者的标准太有问题了。更好的问题是:比较一下新浪和twitter这两个产品。
  • 其二、多种想法PK的压力反应。这点没有问题,如果有机会我想问问这位面试官,豆瓣产品经理们的PK各自的想法时是以这种纠缠的方式吗?如果是这样的话,那我很为你们担忧啊。
  • 其三、很明显,应聘者不知道面试官想说什么,所以应聘者总是给出一些模棱两可的回答。回答得很政客,呵呵。
  • 其四、问的问题都是一些假设性的问题,假设技术人员不可沟通。人家说了,还没有见过不能沟通的情况。结果还要继续追问。这样你既要观察不到你想要的,也搞得大家不愉快。更好的问题的:“请你给一个你和一个很难沟通的人沟通的示例”,或是当应聘者说了“坚持己见”的时候,也应该追问“能给一个你坚持己见的例子吗?”。
  • 其五、整个面试过程完全是在谈一些虚的东西,就像天上的浮云,一点实实在在的东西都没有。比如下面这两个实实在在的问题:“你以前设计过什么产品?”,“你和你的技术团队是怎么合作的?”

这是一个完完全全失败的面试,这个面试官根本不懂面试,甚至工作方法也可能很有问题。也许他只是想找一个能够在工作中附和他的人。

朋友的面试

最后说说我那个朋友的面试,我的这个朋友学习能力很强,也很好专研,工作中解决了很多很困难甚至很底层的问题。他做软件开发时间并不长,但是他对这个行业很有热情,也很执着,并有着相当不错的技术功底。这天他遇到了一个面试官,根据朋友的描述,这位面试官,主要问题了三个问题,一个是关于异步的,一个是关于性能调优的,还有一个是关于学习能力的。

  • 问到异步的问题,我这个朋友说到了多线程中的异步调用,但是他可能问的是网络或是业务中的异步,要不然就是Linux 内核中的异步,当然他也没有说清楚,但他很不满意我朋友的答案,并让我朋友回去多看看书。
  • 问到性能调优的问题时,我这个朋友说了性能调优分三级,业务级,指令级和CPU级,并举例说了使用了一个叫VTune的性能分析工具。面试官却说原来你只懂Windows,有点不屑,并说他只会使用商业工具,更不屑。
  • 当我朋友向他澄清问题时,面试官只是摇头,叹气。并在应聘者作答的过程中不断的打断对方。

我的看法如下:

  • 对于异步来说,我认为这是一种设计或是一种想法,可能会有很多种不同的实现方式,在不同的场景中会有不同的用法。面试官并没有考查应聘者对异步方法的理解,也没有考查异步方法可以用来解决什么,异步方法的优势和劣势,等等。只是觉得应聘者没有给出他想要的答案。
  • 对于性调优的问题,我认为应聘者的思路和知识都很不错,还有使用VTune的经验。无论使用Windows还是Linux,无论使用商业的还是开源的Profiler,很多东西都是相通的,怎么能够因为这个东西不对自己的口味而下结论。为什么不向人家学习一下VTune呢?使用工具只是操作技能啊。
  • 面试官应该是用微笑来鼓励应聘者的,而不是用摇头和叹气,频繁打断对方也是一个相当不好的习惯。看来这个面试官很不能接受不同的东西。

这位有很不错的技术能力的人,看来并不适合做一个面试官,因为他面试的东西都只在知识层次,而且这位面试官有强烈的喜好和倾向,所以,他必然会错过那些有能力但并不合他口味的人。

哎,面对这样的面试官,大家伤不起啊!

(全文完)

来源:酷壳 酷壳

很早以前就想写一篇和面试相关的文章了,今天在网络上看到一篇关于如何去面试程序员的英文文章,发现其中有很多和我共鸣的东西,所以仿照其标题通过自己的经历写下了这篇文章。

工作这么多年来,即被面试过,也面试过他人,对于程序员的面试,经历过很不错的面试,很专业的面试,也经历过一些BT和令人不爽的面试,我个人觉得一个好的面试,面试官是很重要的,所以,本文想从“面试官”的角度来阐述一下。于是,有了下面这样一篇的文章,希望本文对你的职场经历有用,特别是那些正在招聘和面试程序员的朋友,我觉得这篇文章会对大家有很多启示。此外,做为被面试的人,你可以看看本站的《别的程序员是怎么读你的简历的》《程序员需要具备的基本技能》《优秀程序员的十个习惯》其它一些和程序员相关的文章

对于招聘方来说,在招聘程序员的时候,我估计面试应聘者时,最主要想知道的是下面三件事:

  1. 这个程序员的是否够聪明?
  2. 这个程序员能否把事情搞定?
  3. 这个程序员能和我的团队在一起工作吗?

我相信,这是所有团队经理招人要考虑的三个问题,所有的问题也基本上围绕着这三个问题。有些时候,你也许觉得程序员的技术技能可以同时解决这三个问题,一个技术能力优秀的人必然是一个聪明的,可以搞定事情的人,当然也就能和团队一起工作了。是的,感觉看起来是这个样子,但其实并不是这样的。有些人的确很聪明,但却不能处理好工作上的事情,这样人应该是你的朋友,你的顾问,但不应该是你的雇员。有的人为人很不错,和团队所有人都合得来,但并不是很聪明,但工作很刻苦很努力,这样的人可以成为你的下属,比如某个下属骨干的助手,或是整个团队的助手。如果某个人不能和团队一起工作,无论其有多聪明,解决问题的能力有多强,你都不应该和他在一起工作。人个认为,团队的和谐是一切事情的前提。

对于传统的面试招聘过程,基本上来说都是下面这样的样子的:

  1. 阅读应聘者的简历,让应聘者做个自我介绍。
  2. 问一些比较难的非常细节的技术问题,以一问一答的形式。
  3. 给面试者一些和几个编程难题。(比如某些怪异的算法题)

我个人觉得这种面试方法很可笑,也很糟糕,尤其是后面两点。通常来说,这样的面试只会让你面试到一些“书呆子”或是一些“技术痴迷者”,下面让我来一条一条地剖析一下这几条的弊端。

  1. 你很难从一个人的简历或是自我介绍上了解一个人。因为这些都是当事人自己写的,或是自己阐述的。所以,这并不是很准确的,通过简历,你只能知道很简单的事情,这对于是否能招入团是远远不够的。而在面试的开始,让应聘者做自我介绍,只会让面试者以很正式的态度来面对整个面试。一但面试过程很正式,很严肃,就会让人很拘禁,其实,这并不是我们想要的,我要的是应聘者真实和自然的表现,从而才能了解到最真实的东西
  2. 问几个技术细节的问题。比如:我个人经历过的——“ps的-a参数是什么意思?”,“vi中删除换行符的命令是什么?”,“C++的关键字explict,mutable是用来干什么?”等等,等等。以前做为一个应聘者来说,我非常讨厌这样的问题,因为这样的问题查一下手册就知道。难道他要招的是一个字典手册?不是一个人?对于这方面,重要的不是知识,重要的是其查找知识的能力
  3. 给应聘者一个或几个很难的算法题,给上十几分钟,然后让面试者把伪代码或是代码写下来。这样的做法是相当可笑的,不能讨论不能查资料,让人在一种压力状态下作答,这根本就不是实际工作中的状态,而我们的面试也就成了一种刁难(我最变态的经历是,当我把写在两页纸上的代码上交上去后,面试官把其交给旁边程序员输出电脑做校验,结果程序员说,编译出错。于是,面试官说,“很遗憾,可能你写的程序还不多”,相当可笑)。对于这点来说,重要的不是那个解题的答案,而是解题的思路和方法

我以前经历过很多的面试,当技术人员来和我做面试的时候,我发现,“技术人员的思维”对于某些人来说根本分不清面试和考试,在潜意识里,他们在很多时候不是在面试这个人,而是在刁难这个人并以此展示自己的技能。我个人认为我是一个好的程序员,但我可以告诉你我无法通过那样的面试,因为那样的面试是为他们自己准备的,而不是为应聘者准备的。

那么,我又是怎样去面试的呢?

一、确认简历。首先,阅读一下别人的简历是需要的,从简历上,工作经历,项目经历,技术技能这三个事情是你需要了解的。一般来说,你可以先通过电话确定一下他的工作经历,项目经历和技术技能,然后,如果他和你需要的人条件相符的话,可以叫到公司做面对面的面试。千万不要把别人叫来,你又说你的经历和我们的工作有差距之类的话。(我有过一次面试经历,公司我不说了,反正是那个号称需要有良好沟通的公司,面试了我9次左右,从一般的程序员,PM,经理,到总经理,而最后一次直接告诉我,我以前的经历和他们的要求差距很大。我不禁要问了,前面若干次的面试他们都在干什么呢?)

二、面试开场。其次,把人邀请来公司面试,应聘者到了公司来面试,有一点很重要,那就是你一定要让整个面试过程变得很随意,很放松,就像普通的聊天和一般朋友间的交流一样。这样应聘者才会放松并拿出真实的样子来和你谈话和聊天,你才能在很短的时间内了解得更多。让应聘者放下心理负担,让其表现得自然一些,这是招聘方的责任。千万不要说,别人太紧张发挥的不好,有时候,招聘方得想想自己的问题。

面试开场的时候,千万不要让应聘者介绍自己,因为,应聘者早就给你发过简历了,而你也给其打过电话了。另外,应聘者对这个面试惯例通常都会准备得非常不错的,另一方面,这会让整个面试过程太正式太严肃了。所以,不妨问问应聘者是怎么过来的?最近怎么样?还可以和应聘者谈一个大众话题,比如喜欢什么体育,音乐,电影,社会热点什么的,自己也别板着个脸,说说笑笑,试图让大家都放松下来。另外,通过这些闲聊,你可以知道他/她的与人交往能力和一些性格。另外,不要让桌子放在你和应聘者之间,把环境搞得随意一些。

三、多让应聘者说说他的经历。接下来,如果你要觉得这个应聘者是否是一个可以解决问题,是一个可以把事情搞定的人,不用问他/她会做什么,直接问问其做过什么?干过什么事?对于一个好的程序员来说,很难想像其没有相关的实践,就算你是在大学里,你也应该做过什么。如果你有解决问题的能力,那么,很显然,今天你应该解决了很多问题,也搞定了很多事情,听听应聘者说一说他的那些事。(不要使用一问一答这种方式,应该让应聘者多说,而多听,多想)

在他讲他的项目的时候,通常来说你要注意下面几点:

  • 沟通表达能力。应聘者能不能把一个事情讲清楚。如果这个人聪明的话,他就可以用最简单的语言把一个复杂的事情讲清楚。而且,这是一个好的程序员最基本的能力。而且,你可以在应聘者一边描述其经历的时候,你可以和应聘者有一些的良好的来来回回的交谈,这样就可以知道,他的沟通能力和沟通方式,从而了解他的性格,。
  • 角色和位置。也许他参与了一个很大的项目,但只是做了一个很简单的模块。所以,了解其在项目中的担任的角色和位置是非常必要的。当应聘者说到“我们”或者“大家”之类的词汇时,一定要向下细化和明确。
  • 做出的贡献和解决了什么的问题。这个很重要,通过了解这个,你可以知道面试者是否聪明,是否有能力解决问题,是否有好的技术底子。
  • 演示。如果可能,你可以让应聘者展示一些其写过的代码,做过的设计,或是直接给你看看他写的程序的演示。(从设计上,代码的风格,重用性,维护性上你可以了解很多很多)
  • 基础知识。了解该项目中应聘者使用的技术的一些基础知识,比如,通过整个过程,你可以问一些网络,语言,面象对象,系统的一些基础知识。基础知识是非常重要的,这直接关系到了他的能力。
  • 流程和工具。了解应聘者所熟悉的项目的流程(银弹,瀑布,敏捷,……),还有流程中的一些工件(如:需求文档,设计文档,测试方档等),以及在开发过程中使用的工具(内存测试,代码检查,BUG报告,版本维护,开发调试……)(关于程序员的基本技能,你可以参考——《程序员需要具备的基本技能》)

有人会说,应聘者的经历可以被他自己编出来的,他可以把一些不是他做的事说成是他做的。是的,的确是有这种可能。不过,不要忘了,一个谎言背后需要用更多的谎言来圆谎的,所以,你不必担心这个问题,只要你在应聘者的描述过程中逐步求精,细化问题,你会知道应聘者是否是在编故事的。

千万记住下面几点:

  • 谈话风格要随意和自然,不要正式。
  • 在了解应聘者以前做过的事的时候,不要太投入了。因为招聘方也是技术人员,所以有时候,招聘者自己会因为应聘者所做的项目中的技术太过迷人而被吸引了。
  • 要注意引导应聘人。相信我,应聘的程序员十个人有八个人讲不清楚以前做的是什么。因为他们直接跳过了项目背景和要解决什么样的问题,而直接进入具体实现。
  • 不要一问一答,应该多让应聘者说,这样才能多全方位了解一个人。
  • 了解一个人的过去,了解一个人做过的事情,比其会做什么更重要。
  • 了解一个人的性格,想法,思维和行为,比了解其技术技能更重要。
  • 沟通能力,表达能力,语言组织能力,理解能力,等方面的能力,关系到了是否能和别人一起工作。
  • 基础知识比知识的点滴要重要得多。你可能不知道其个C++的关键字,但你应该要知道C++的继承和多态。
  • 技术技能固然很重要,但比其更重要的是这个人获取知识的能力,学习能力是在计算机这样变化飞快行业中必需具备的。
  • 是否可以进行培养,比掌握的技能更重要。

四、实际参与??这一步可能是很不好实施的。因为,这需要一些应聘者付出一定的时间,如果是毕业生,那没有问题,先让他来实习一段时间。但如果别人有工作,就不好了。也许你会说,这就是试用期的用处了。不过,我个人觉得,你得要尊重应聘者,人家把那边的工作辞了,来你这边工作,三个月试用期间,如果没有什么原则上的问题,你作为一个招聘方又反悔了,这样做很是相当的不好。如果发现这样的事,只能是招聘者自己的问题。

在面试过程中,一些招聘者会让应聘者们一起做个游戏,或是搞个辩论比赛,或是现场组个团队干个简单的事情,有的甚至让应聘者请一天假到自己的公司里来和自己的团队一同工作一天,并要完成某个事情(甚至给其设置上deadline),并通过这些来考量应聘者的实际参与能力。

是的,如果没有一起工作过,没有一些实际的事情发生,单靠几个小时的面试很难了解一个人的。设置上这些面试的环节,在最短的时间内来了解应聘者的一切,对于招聘方来说无可厚非。而且有的时候也能得到不错的效果。在这里,我只提一点,有时候这样的周期拉得很长,让应聘者付出了很多,反尔会让应聘者产生反感和厌烦情绪,从某种意义上来说,这实在是对应聘者的不尊重。

对于这一点,我一直持疑问的态度,所以,我在其后打了两个问号。老实说,对于实际参与这一环节,我个人的意见是适可而止,因为时间太短了,无论你怎么做你都无法了解完整。即然无法了解完整,那就获取你最需要的吧,就是本文开头的那三个问题,以及上面所述的“第三点”(了解应聘者的以往经历)。

也许这个文章中有一些你不同意的观点,没问题,欢迎批评,如果你有更好的做法,我也想听听,不妨在这里留个言,如果不想留也可以email给我。

(全文完)

来源:酷壳

懒人版

cdr格式

文件校验信息

1
2
3
4
5
6
7
名称: OS X El Capitan 10.11.3 (15D21) Lazy Installer.cdr
大小: 8000032768 字节 (7629 MB)
CRC32: 879D014C
CRC64: 16AA4DD28C00B896
SHA256: 7E37A068FE39CAACA831513515369E71A7EC1E84161338DF855DF02FB69FEBB4
SHA1: 030BCBF5A2B147B898C0D881517C6F2C99B13E30
BLAKE2sp: DD074E91757C86C2E9152A14BD42D80EB4D78F0D1E5B84308A1361C262DB51D3

以App Store下载的原版安装包Install OS X El Capitan.app 制作,为能安装到MBR硬盘上,仅替换了OSInstall.mpkg和OSInstaller,另外在Extra文件夹加入了变色龙引导和常用的第三方驱动,可根据需要增减.

下载地址

百度云(低速) 密码: juk4

请用硬盘安装助手先恢复到硬盘的一个大于8G的、未格式化的分区用于安装(具体方法自己搜教程):

OS X El Capitan 10.11.3 15D21原版安装包镜像

App Store下载的OS X El Capitan 10.11.3 15D21原版安装包Install OS X El Capitan.app的镜像

文件校验信息

1
2
3
4
5
6
7
名称: Install OS X El Capitan 10.11.3 15D21.dmg
大小:5.78GB
CRC32: E8FD2C7B
MD5: 80C5702AF3DEF49DFFEA390C390A0709
SHA-1: FFC8593886DA7CB31F7AB4A4EA1006AE05B80570
名称: Install OS X El Capitan.app/Contents/SharedSupport/InstallESD.dmg
MD5: 24c74acc4779b32a01024348c00892dc

在OS X中双击加载Install OS X El Capitan 10.11.3 15D21.dmg,里面的Install OS X El Capitan.app就是App Store下载的OS X El Capitan 10.11.3 15D21原版安装包,绝对原版!

下载地址

百度云(低速) 密码:uswh

带Clover 3330引导的OS X El 10.11.3 15D21原版安装U盘镜像

请看论坛原帖

开源

本软件已开源,请自行修改及完善功能。QQ群:198889192
本项目由于网站改版以及个人时间原因停止继续开发,不过大家有兴趣可以发pull request,共同继续完善功能。

项目地址https://github.com/wudimenghuan/HeidaStudy

说明

从2012年10月开始,黑龙江大学网络课学习管家(网络课学习助手)已经发布6个版本了,希望大家多多支持STX8.COM!

如果有课程需要添加,或有什么建议或意见,请加QQ群:198889192

注意事项

如果出现一直显示时间更新出错的问题,需要先登录一下平台,再退出平台,然后再用软件

使用过程中不要登录平台

文件校验信息

SHA1、SHA256等文件校验信息在Readme.txt中,可使用PGP检查签名。

我的PGP公钥 (PGP Public Key)

下载地址

请到github上获取院代码,自行编译

更新日志

V3.8.4

  • 支持大学体育

V3.8.2

  • 支持2015秋季课程

V3.7.1

  • 合并3个版本

V3.7.0

  • 重写界面,优化流程

V3.6.3

  • 添加几个未添加的安全教育老师

V3.6.2

  • 加入2014秋安全教育课程支持

V3.6.1

  • 修复绿屏BUG

V3.6

  • 修复2014秋形势任务教师未标记问题

V3.5

  • 2014秋季学期

V3.4

  • 2014春季学期

V3.3

  • 修复打不开的问题
  • 使得程序支持Windows所有系统

V3.2

  • 修复界面无法显示的bug

V3.1

  • 2014春季学期支持

V3.0 Beta 公测版

  • 加入总进度条
  • 加入用户密码验证功能

V2.9 正式版

  • 修复bug

V2.9 内测版

  • 加入2013年春季学期课程

V2.5 正式版

  • 增加总时间功能

V2.4 正式版

  • 更改时间显示一直占用内存导致内存不停增长的问题

V2.3 正式版

  • 加入更多网络课,网络课已经完全加入

V2.2 正式版

  • 修复S3加速功能为稳定加速

V2.1 内测版

  • 时间显示加入进度条

V2.0 内测版

  • 增加更多网络课支持

V1.9 预览版

  • 更改界面布局
  • 增加提示

V1.8 预览版

  • 使提示更清晰、明确
  • 修复关闭不完全导致弹出的关闭程序窗口

V1.7 内测版

  • 加入网络课支持

V1.6 内测版

  • 修复2倍时只有1倍的问题
  • 修复窗口拖动bug

V1.5

  • 时间显示功能
  • 合并上下两个版本
  • S3超级加速功能(不稳定)

V1.4 内测版

  • 速度提升,超越4倍

V1.3 正式版

  • 去掉课程号,改为选择老师
  • 课程选择功能实现
  • 修复速度调整bug

V1.2 正式版

  • 速度调整功能完成

V1.1 体验版

  • 完成基本功能,可实现无人值守自动挂机

Linux笔记

内容:主要讲解常用命令

2015年12月

时空

Linux概述

Linux的内核版本

38页1.2.5

Linux发行版

目前Linux主要分为两大分支:

  • Debian

  • 使用dpkg方式安装软件,包括Debian, Ubuntu(Linux Mint)

  • 全球最高份额,deb包非常方便

  • deb包

  • sudo dpkg -i 软件包

  • sudo dpkg -r 软件名

  • Red Hat

  • 使用RPM方式安装软件,包括Red Hat(CentOS), Fedora, SuSE

  • 只有中国份额较高。因为进入中国比较早,很多人不愿意换

  • rpm包

开源许可证

45页1.3.3

Linux的安装

开机流程

两种启动方式:BIOS和UEFI

  • 以前:BIOS启动

  • 对应MBR磁盘,MBR分区表

  • 只有4个主分区

  • 现代:UEFI启动

  • 对应GPT磁盘,GUID分区表

  • 无限主分区

  • Mac默认使用GPT

MBR方式开机流程

72页3.2.4

磁盘分区

初学:在硬盘尾部安装,全部使用逻辑分区

挂载点 容量 格式
/ 剩下的空间 ext4
swap 与内存大小相同 swap

正常:

挂载点 容量 格式
/boot 100M ext4
/ 相当于系统盘 ext4
/home 剩下的空间 ext4
swap 与内存大小相同 swap

常用命令

X Window热键

X Window与文字模式的切换:[Ctrl] + [Alt] + [F1]~[F6]

重启X Window:Ctrl+Alt+Backspace

基础命令和热键

列出文件

1
2
3
$ ls
$ ls -l
$ ll # Ubuntu可以用

显示日期与时间

1
$ date

日历

1
2
3
$ cal
$ cal 2015
$ cal 12 2015

计算器

1
$ bc

热键

  • Tab 命令补齐、文件补齐
  • Ctrl+C 停止程序
  • Ctrl+D EOF、离开

在线求助

1
$ man 要查询的命令

超简单文本编辑器:nano

1
$ nano test.txt

数据同步写入磁盘

1
$ sync

关机

1
# shutdown -h now

重启

1
2
# reboot
# shutdown -r now

切断电源(不建议)

1
# halt

切换执行等级:init

1
2
# init 0 # 关机
# init 6 # 重启

设置当前用户的密码

1
$ passwd

Linux文件操作

Windows中的文件夹在Linux中叫目录。

特殊的目录
. 代表此层目录
..代表上层目录
- 代表前一个工作目录
~ 代表当前用户主目录
~account 代表account这个用户主目录

目录相关操作

切换目录:cd

1
$ cd [相对路径或绝对路径]

显示当前目录:pwd

1
$ pwd

新建目录:mkdir

1
$ mkdir test # 新建一个名为test的目录

删除空目录:rmdir

1
$ rmdir test

环境变量:$PATH

使用echo显示$PATH

1
$ echo $PATH

文件操作命令

查看文件与目录:ls

1
2
3
$ ls
$ ls -l
$ ls -al

复制:cp

1
$ cp 源文件 目标文件

删除:rm

1
2
$ rm 文件或目录
$ rm -r 递归删除,删掉目录中所有文件和目录

移动、重命名:mv

1
$ mv 源文件 目标文件

文件内容查阅

直接查看一个文件的内容:cat

1
$ cat test.txt

反向查看:tac

1
$ tac test.txt

添加行号打印:nl

1
$ nl test.txt

翻页查看:more

1
$ more test.txt

上下翻页查看:less

1
$ less test.txt

只看前面几行:head

1
2
$ head test.txt # 默认10行
$ head -n 20 test.txt

只看后面几行:tail

1
2
$ tail test.txt
$ tail -n 20 test.txt

查看非纯文本文件:od

1
$ od test.txt

修改文件时间或创建新文件:touch

1
2
3
$ touch new.txt # 创建一个名为new.txt的文件
$ touch -d "2 days ago" test.txt
$ touch -t 1512251200 test.txt

查看文件类型:file

1
2
3
$ file test.txt # ASCII text
$ file /usr/bin/passwd
$ file /var/lib/mlocate/mlocate.db # data

文件的查找

188页7.5.2

寻找执行文件

1
2
$ which ifconfig
$ which cd

在数据库中寻找特定文件:whereis, locate

1
2
$ which test.txt
$ locate test.txt

扫描硬盘查找:find

1
2
3
4
$ find [PATH] [option] [action]
$ find / -user root
$ find / -name passwd
$ find / -mtime 0

Linux目录配置标准:FHS

152页

可分享的(shareable) 不可分享的(unsharealbe)
不变的(static) /usr (软件放置处) /etc (配置文件)
/opt (第三方软件) /boot (开机与内核文件)
可变动的(variable) /var/mail(用户邮件信箱) /var/run (程序相关)
/var/spool/news(新闻组) /var/lock (程序相关)

Linux的文件权限

用户与用户组

139页6.1

文件所有者,用户组,其他人

root是万能的

查看文件权限

1
$ ls -al

文件类型与权限

可读、可写、可执行

1
2
-rwxrwxrwx 4 root root 4096 Sep 8 14:06 test.txt
drwxrwxrwx 9 root root 4096 Jan 6 10:57 hello

文件权限 连接数 文件所有者 文件所属用户组 文件大小 修改时间 文件名

文件权限分为文件类型和3组权限

  • 文件类型

  • d表示目录

  • -表示文件

  • l表示连接文件

  • b表示接口设备

  • c
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19

    表示串口设备



    - 3组权限

    - 第一组:文件所有者的权限

    - 第二组:同用户组的权限

    - 第三组:其他非本用户组的权限

    > 142-144页例题练习

    ### 改变文件属性与权限

    改变所属用户组:chgrp

    # chgrp root test.txt
    1
    2
    3

    改变文件所有者:chown

    # chown root:root dir
    1
    2
    3
    4
    5

    chown -R 表示递归

    改变文件的权限:chmod

    $ chmod 777 test.txt $ chmod 755 test.txt
    1
    2
    3
    4
    5
    6
    7
    8
    9

    - `r`:4
    - `w`:2
    - `x`:1

    > 146页例题

    符号类型改变权限

    $ chmod u/g/o/a +/-/= r/w/x 文件或目录 $ chmod u=rwx,go=rx test.txt $ chmod a-x test.txt $ chmod a+w test.txt
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40

    不要随便用chmod的递归

    ### 目录与文件的权限意义

    权限对文件的重要性

    - `r`: 可读取
    - `w`: 可编辑、新增、修改,不包括删除
    - `x`: 可执行

    权限对目录的重要性

    - `r`: 可读取(可以列出)
    - `w`: 可写入
    - 新建新的文件与目录
    - 删除已经存在的文件与目录
    - 重命名
    - 转移该目录内的文件、目录位置
    - `x`: 可进入

    > 148-149页例题

    ### Linux文件种类

    - 普通文件(regular file): `r`
    - 目录(directory): `d`
    - 连接(link): `l`
    - 设备(device)
    - 块(block)设备: `b`
    - 字符(character)设备文件: `c`
    - 套接字(sockets): `s`
    - 管道(FIFO, pipe): `p`

    ### 文件的默认权限与隐藏权限

    > 180-181页例题

    默认权限:`umask`,在原权限基础上减去权限

    $ umask #查看 $ umask -S $ umask 002 #设置 $ umask 022
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19

    隐藏属性:略(自学)

    > 183页7.4.2
    > 设置文件的隐藏属性:`chattr`
    > 查看文件的隐藏属性:`lsattr`

    ### 权限相关习题

    > 194页情景模拟题

    ## Linux文件系统

    ### 磁盘与目录容量

    > 210页8.2.1

    列出文件系统的整体磁盘使用量:`df`

    $ df -h
    1
    2
    3

    评估文件系统的磁盘使用量:`du`

    $ du $ du -a # 同时列出文件容量 $ du -sm # s: 只列出总量 m: MB
    1
    2
    3
    4
    5

    ### 连接文件:ln

    hard link(硬链接或实际连接)

    $ ln /etc/crontab . $ ll -i
    1
    2
    3
    4
    5
    6

    - 无法做“目录”的链接
    - 删掉其中一个,另一个可用

    symbolic link(符号连接)

    $ ln -s /etc/crontab crontab2 $ ll -i /etc/crontab ./crontab2
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    - 相当于Windows的快捷方式,删除源文件会不可用

    ### 磁盘的分区、格式化、检验与挂载

    略(自学)

    ## 压缩与打包

    ### 单一文件压缩命令

    gzip, zcat

    $ gzip file $ zcat file.gz $ gzip -d file.gz
    1
    2
    3

    bzip2, bzcat

    $ bzip2 -z file $ bzcat file.bz2 $ bzip2 -d file.bz2
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15

    ### 打包命令:tar

    打包同时可以压缩,tar的参数:

    `-z`: gzip方式压缩/解压缩
    `-j`: bzip2方式压缩/解压缩
    `-c`: 新建打包文件
    `-x`: 解打包或解压缩
    `-v`: 显示过程
    `-f`: 跟要被处理的文件名
    `-p`: 保留原本权限与属性

    打包

    $ tar -zcvf dir.tar.gz dir $ tar -jcvf dir.tar.bz2 dir $ tar -cvf dir.tar dir
    1
    2
    3

    解包

    $ tar -zxvf dir.tar.gz $ tar -jxvf dir.tar.bz2 $ tar -zxvf dir.tar.gz -C /tmp
    1
    2
    3

    备份

    # tar -zpcvf etc.tar.gz /etc # tar -jpcvf etc.tar.bz2 /etc
    1
    2
    3

    查看

    $ tar -ztvf dir.tar.gz $ tar -jtvf dir.tar.bz2
    1
    2
    3
    4
    5

    ## vim编辑器

    ### 进入vim

    $ vim 文件名
    1
    2
    3

    ### 新建文档

    $ vim 新文件名
    1
    2
    3
    4
    5

    不保存则不生成新文件

    ### 进入插入模式

    i, I, a, A, o, O
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

    `i`光标位置插入
    `I`行首插入
    `o`当前行后插入新行
    `O`当前行前插入新行
    `a`光标位置后插入
    `A`行末尾插入

    ### 行号

    显示行号

    :set nu :set number :set nonu :set nonumber
    1
    2
    3

    不显示行号

    :set nu :set number :set nonu :set nonumber
    1
    2
    3

    ### 跳转

    :数字 数字G
    1
    2
    3
    4
    5

    最后一行`G`

    ### 删除行、剪切

    dd 数字dd
    1
    2
    3

    ### 复制行

    yy 数字yy
    1
    2
    3

    ### 粘贴

    p
    1
    2
    3

    ### 块选择

    Ctrl+v
    1
    2
    3
    4
    5

    ### 预设行号

    编辑`~`下的.vimrc文件,写入

    set nu

这个东西是书上看到的,集成环境,不错。

下载了一个XAMPP的安装版,先要点setup的脚本,然后运行control

但是Apache还是起不来,不知道为什么

错误:

18:55:49 [Apache] Status change detected: running

18:55:50 [Apache] Status change detected: stopped

18:55:50 [Apache] Error: Apache shutdown unexpectedly.

18:55:50 [Apache] This may be due to a blocked port, missing dependencies,

18:55:50 [Apache] improper privileges, a crash, or a shutdown by another method.

18:55:50 [Apache] Press the Logs button to view error logs and check

18:55:50 [Apache] the Windows Event Viewer for more clues

18:55:50 [Apache] If you need more help, copy and post this

18:55:50 [Apache] entire log window on the forums

img

后来发现是因为80端口被占了,解决方法是点Apache的Config,把所有80改成81,然后XAMPP的管理的Config里也要改成81端口。

img

但是Tomcat能启动,但是点左面的红叉装上服务之后就不能启动。

所以应该是装不上服务。

mysql默认root用户没有密码,输入mysql –u root 进入mysql

1、初始化root密码

进入mysql数据库

1
mysql>update user set password=PASSWORD(‘123456’) where User='root';

2、允许mysql远程访问,可以使用以下三种方式:

a、改表。

1
2
3
4
mysql -u root –p
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;

b、授权。

例如,你想root使用123456从任何主机连接到mysql服务器。

1
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

如果你想允许用户jack从ip为10.10.50.127的主机连接到mysql服务器,并使用654321作为密码

1
2
mysql>GRANT ALL PRIVILEGES ON *.* TO 'jack'@’10.10.50.127’ IDENTIFIED BY '654321' WITH GRANT OPTION;
mysql>FLUSH RIVILEGES

c:在安装mysql的机器上运行:

进入MySQL服务器

1
d:\mysql\bin\>mysql -h localhost -u root

赋予任何主机访问数据的权限

赋予任何主机访问数据的权限

1
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION

使修改生效

1
mysql>FLUSH PRIVILEGES

退出MySQL服务器

1
mysql>EXIT

转自博客园

中国女孩亲历美国教育:美国高中的英语课怎么上?一位土生土长的中国女孩,也一定能够以自己的方式,读懂西方文学巨匠们的“自白”。中美教育的区别,天上地下啊。

我在美国高中的第二年,也是高中最后一年,终于和同年级的同学坐进了同一个英语课堂。私立高中的英语课和美国大学英语课设置类似,同一等级的课程分成很多专题,学生可以根据兴趣自己选。莎士比亚、战争文学、存在主义、诗歌和小说写作……一眼扫下来,若不是亲眼在课表上看到,很难相信这是高中英语教授的内容。

害怕自己眼大肚子小,我选了一门看上去比较浅显的主题为“文学中的物质主义”的课程,老师是我宿舍楼层的舍监(很多美国私立高中的老师和学生一起住在宿舍),有个七八岁一头金毛的可爱儿子,平时总是笑眯眯的。然而在开课前,学校临时发现她的课程时间排不进我的课表,于是将我分到另一门课里。课时是每天下午让人昏昏欲睡的第六节,课名叫做“自白式记叙”。

在Deerfield的两年,与跟在美国求学的这七年一样,令我最难忘的经历总是来得阴错阳差,而经历的过程常常有如一场艰难的长跑,站在起点时往往并不会带着欢欣鼓舞的心情。
第一天的课程结束后,我找到老师,告诉他我一点都没听懂他关于詹姆斯·乔伊斯作品的讲解,然后沉默地等着他开口,劝我换到别的班级。

Dr. Driskill有一头花白的头发和雪白的络腮胡,年龄似乎在五六十岁,具体岁数难以估计。他摘下眼镜,看着我静静思考了一会儿。“我晚上会在英语教学楼一层的大书房看书,”他若无其事地说:“我们可以聊聊。”

晚上八点钟,我来到英语教学楼,大书房的门半开着,高高的天花板下,棕红色木壁前悬挂着一圈历代校长的画像。Dr. Driskill坐在房间正中央一张长木桌的尽头,看到我微微点了点头。

“去年在ESL(English as Second Language,英语为第二语言)你都读了些什么书?”
我一本本地列出来。有《杀死一只知更鸟》、《麦田里的守望者》、《紫色》、《老人与海》等。在英文文学里,每一本都以文字简明出名。而这学期Dr. Driskill课表上的书则艰深晦涩,又带着浓重的时代背景,似乎每一本都是这些书的反义词。

听了这个单子以后,Dr. Driskill出乎意料地看上去很满意。用不疾不徐的语速,他开始解释这学期要读的书:乔伊斯的《一个青年艺术家的自画像》的主人公其实和《麦田里的守望者》中的霍尔顿带着类似的困惑,都是渴望能够挣脱身边生活禁锢的年轻人;康拉德的《黑暗之心》和《老人与海》一样,描述的都是主人公为了追寻某物而踏上的遥远征程;莫里森的《宠儿》则反映和《紫色》类似的社会话题:美国历史上的黑人在社会歧视下做出的挣扎;《洛丽塔》,他顿了顿,可能是唯一一部比较大的阅读挑战,不过——我至今记得他的表情,双眼微微瞇着,好像单提到小说的名字就把他拉回到了那些令他着迷的词句间——“太值得一读了”。

第二天,我回到了Dr. Driskill的课堂,或许是由于他对我的“阅读恐惧”漫不经心的态度,或许是由于他在文学作品中的牵线搭桥使那些“面目狰狞”的书变得不再高不可攀,或许还有其他说不清的原因。总之,在那个学期的每天下午两点钟,在英语教学楼的二层的一张圆桌旁,我和十几位同学一起穿越时间和空间,窥探了一位又一位英文作家私密而引人入胜的“自白式记叙”。

美国私立学校的英文教学或许相当于中国高中的“语文课”,不过两者的形式和内容则天差地别。Deerfield的英语课是由老师带领的圆桌讨论,以整本书作为教学单位,比起就书论书,更注重教会学生如何做有鉴别力的读者,和文字保持一定距离,学会分析各种文学技巧,从自己的立场欣赏或批判作者的写作手法。

Dr. Driskill带着我们分析一本书,如同在用天文望远镜和显微镜快速切换着轮流审视作品。时代背景、作者生平和文学流派的介绍为我们勾勒出理解作品的大框架,逐字逐句的审读和关键词的分析帮助我们理解作者字里行间的艺术。一节课有时一扫几百年的美国历史,有时辩论几句对白中体现的人物性格,很有大学课堂不拘一格的风格,一路听下来非常过瘾。

而考试的形式往往是建立在整本书之上的当堂小论文,不会为平时的课堂教学加上框框,因此一本书十位老师可以教出十种风格,而同一位老师每一年的授课内容也会根据自己的心得调整,不尽相同。如同俗话说的:“一千个读者眼中,有一千个哈姆雷特。”

中国的语文课堂以课文为单位,老师习惯指出大纲上列出的词句,带领学生按部就班地分析:我记得在北京高中时,老师曾花了半节课的时间为我们讲解《孔乙己》的最后一句,应该如何理解“大约孔乙己的确死了”中“大约”和“的确”的冲突。所问的问题也大多已经暗示着标准答案的方向,比如:“孔乙己的悲剧反映了当时封建科举制度怎样的特征?”

而Dr. Driskill的课堂上则是另一种风景。他常常在每节课开头随意问:“那么,大家对上一周的阅读感觉如何?”然后靠回椅子里,听学生七嘴八舌的看法。讨论如同前行的船只,由学生的兴趣和临堂辩论产生的激流推进,而老师仅偶然抛出几句评论来推动讨论,使船只不至于偏离航道太远。

Dr. Driskill从不害怕提出一些对十六七岁的学生听来高深抽象,无边无际的问题。在讲解《一个青年艺术家的自画像》时,他鼓励我们探讨“主人公对艺术的看法和对宗教、家庭、学校、祖国的看法有哪些区别?为什么他会在艺术中寻求解脱?”他也从不避讳听上去有些离经叛道的问题:“《洛丽塔》整本书是否包含了任何道德教训?作者有没有打算通过这本书传达任何道德教训?”

久而久之,虽然读书仍要翻着字典,我对这些问题慢慢不再惧怕,也不太担心自己答案的片面和幼稚,毕竟最终的答案总是在大家的你一言我一语当中慢慢成形,而许多问题最后总是没有答案的。

尽管每次的阅读只有短短几十页,课堂上几十分钟的讨论却往往不能穷尽其中丰富的内涵。于是,在每周二Dr. Driskill晚上在宿舍值班的时候,我常常造访,在一栋低年级男生宿舍楼一层的公共客厅里,周围十四五岁男孩打闹嬉笑声中,和他继续探讨课上没有聊完的话题。

在这些谈话中,我和Dr. Driskill有时会跃过书本,聊到各自的生活。他是爱尔兰裔美国人,大学上到一半,征兵被征到了越南战场上,曾在那里担任了好几年飞行员。回到美国后,在加州伯克利大学读了文学博士,开始了当老师云游四方的生活,在意大利、香港、日本、西班牙的国际学校都曾当过英语老师。或许也正因为这个原因,他为我们布置的阅读书籍中,有爱尔兰裔代表作家乔伊斯,有以写越战小说出名的Tim O’Brien,也有几位以英语作为第二甚至第三外语创作的作家。

正如在课堂上,我学着在每本书的语句和片段中捕风捉影,揣摩作者的意图,通过Dr. Driskill布置的书籍,也可以阅读出他的思考、信仰和一生的阅历,以及一些他从不愿开口谈起的回忆。

最后一节课,Dr. Driskill背着吉他,拿着一罐雪碧来到教室。“其实我根本不爱喝汽水,”他干笑了一声,啜了一口雪碧润润嗓子,拨动琴弦,开始演唱他为越战当中死去的士兵兄弟们创作的歌曲。教室安静得出奇,只有窗外树叶沙沙的响声。我努力捕捉他的歌词,但在吉他的伴奏下,很难听懂。甚至比第一节课上,他关于詹姆斯·乔伊斯的讲解还难听懂。
然而我仍满心感激。Deerfield是我所接触过校规最严格的学校,生活中处处是条条框框。然而在课堂上,学校却给予学生完全的信任,天高任鸟飞,相信不谙世事的我们也可以吸收文学世界中的精华。

对我的自我怀疑,Dr. Driskill漫不经心的态度如同一支镇定剂,因为他也同样相信,哪怕借着磕磕绊绊的英语,一位土生土长的中国女孩也一定能够以自己的方式读懂西方文学巨匠们的“自白”;而通过这些文字,以及他的琴声歌声,她也能够理解一位足迹遍布世界的越战老兵的“自白”。

或许正如同他说的,这一切都“太值得一读了”。

高雨莘是自由撰稿人,现居北京。

来源:纽时中文

To sound like a Brit, you’ll need a “flexible tongue tip,” and for that you must exercise, says Barbara Berkery, a dialect and voice coach currently tutoring Geoffrey Rush on the Queensland set of the fifth “Pirates of the Caribbean” film.

口音和发音教练芭芭拉·伯克里(Barbara Berkery)说,想说一口英音,得有个“灵活的舌尖”,只有通过练习才能实现。目前,她在《加勒比海盗》(Pirates of the Caribbean)第五部的昆士兰片场指导杰弗里·拉什(Geoffrey Rush)。

Americans have particularly lazy tongue tips. When Berkery is training an actor in a British accent, she starts with a tongue boot camp of silent flicks and twists. There is a physicality to speech we prattling adults often overlook.

美国人的舌尖特别懒。伯克里训练演员说英音时,先集中训练他们的舌头无声地快速移动和扭动。我们喋喋不休的成年人经常忽视说话方式中的身体性层面。

“Babies learn to speak by watching us making shapes at them from their crib,” says Berkery, who advises her clients to similarly study mouths while watching videos of politicians, like David Cameron, who have perfected the British accent that linguists call “Received Pronunciation.”

“婴儿学说话是从躺在襁褓里看大人的口型开始的,”伯克里说。她建议客户用类似的方法学习口型,比如观看政客的讲话视频,比如戴维·卡梅伦(David Cameron)的英音就达到了语言学家们所说的“标准发音”。

BBC programs are also good primers. Americans speak with wide, almost grinlike mouths. British speech requires a dropped jaw and vertically open lips. (Imagine you are blowing kisses and then say the word “swan.”) Clearly enunciate consonants. Don’t, for example, say T’s as D’s (it is “butter,” not “budder”). “That’s a very American thing,” Berkery says. You should hear the full T at the end of “cat.”

BBC的节目也是很好的范本。美国人讲话时嘴咧得很开。讲英音则需要把下巴往下拉,嘴唇竖着张开(想像着你在飞吻,然后念出“swan”这个单词)。辅音要发得很清楚。比如,不要把“T”发成“D”(不要把“butter”念成“budder”)。“那是典型的美式发音,”伯克里说。说“cat”的时候,末尾的的“T”要念得很完整。

Illustration by Radio

Practice British consonants and vowels with repetitive ditties, like “Ten tiny typists tripped through the tunnel”; after that, graduate to reading whole chapters of British novels aloud. Don’t run words together as Americans do. Instead, each word needs what Berkery calls an “infinitesimal space” around it, which will make you speak more slowly.

接下来,用绕口令练习英语辅音和元音,比如“Ten tiny typists tripped through the tunnel”;之后大声朗读整章英文小说。不要像美国人那样把单词连在一起念。而要像伯克里说的那样,在每个单词前后留出“无限短的停顿”,这样你说话会慢一点。

At a certain point, go undercover. Berkery trained Renée Zellweger to sound British for her role in the movie “Bridget Jones’s Diary.” Before filming started, Zellweger used an alias to get a temp job at a London publishing house where everyone assumed she was British. Order at a restaurant or ask to try on clothes in a department store in your new patois. “Use the accent with strangers, otherwise you’ll never get it,” Berkery says. Practice until nothing can jar you out of it, not even a sex scene or a close call with an oncoming taxi.

到了某个阶段,就可以像卧底一样实战演习了。蕾妮·齐薇格(Renée Zellweger)拍《BJ单身日记》(Bridget Jones’s Diary)的时候,伯克里也帮她练过英音。拍摄开始前,齐薇格用化名在伦敦一家出版社做临时工,那里的人都以为她是英国人。用你的新口音在餐馆点餐,或者在商场要求试衣。“用这种口音跟陌生人说话,否则你永远也无法掌握它,”伯克里说。不断练习,直到口音在任何情况下都不会改变,就算做爱或者匆忙叫住迎面而来的出租车时也一样。

Get good enough, and eventually you will be able to slip effortlessly into the accent. “It should be second nature to you,” Berkery says.

好好练习吧,最后你一定能轻松转换成那种口音的。“它应该变成你的第二本能,”伯克里说。
本文最初发表于2015年5月10日。

翻译:王相宜

来源:纽时中文

昨天,一篇呼吁抵制新国货小米的文章,在网上流传。这篇文章,总结起来,其实很简单,那就是:小米的低价,获得了消费者,在消费者量的支持下,就有能力与上游厂家谈判,会伤害上游产业的利润,而上游的研发又需要大量资金。所以,小米的低价通过侵蚀上游利润的方式,最终会损害整个电子芯片产业。

这个结论是错误的。

首先,文章对市场的认识是错误的。

在一开始,文章以Uber为例子,指责Uber伤害到交通行业。不过,市场是动态的,只要司机、车、消费者的需求还存在,没有滴滴与Uber,市场中还会有新的模式出现。与此同时,市场的动态变化也是缓慢的,不会出现Uber或滴滴一夜之间就倒掉,交通行业天下大乱的情况。如果说,滴滴与Uber的系统可能会一夜之间崩溃,那么,同样的,出租车司机也会在一天之内举行罢工。甚至,即使出现这种情况,也不要紧,北京的黑车司机在自己车上挂的红色小灯,已经告诉我们市场会怎么来应对这种情况。

所以,文章中所谓的滴滴与Uber控制交通行业,既是静态地看待市场,认为市场无法变化以适应新情况,同时又认为整个市场会一夜之间彻底颠覆。这既在逻辑上是自相矛盾的,又是不可能出现在现实之中的。

更何况,市场是细分的。现在既有Intel至强CPU,8核16线程,价格1万元左右,也有双核CPU,价格仅仅200元。在手机市场,既有小米,也有苹果。所以,只要有需求,不用担心卖不出好价钱。

其次,文章也不了解科技史。

从20世纪60年代中,到现在为止,计算机芯片行业的发展规律都符合摩尔定律。摩尔定律是Intel创始人之一戈登·摩尔(Gordon Moore)提出来的。其内容为:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。换言之,每一美元所能买到的电脑性能,将每隔18-24个月翻一倍以上。更简单的说,同样性能的电脑,会越来越便宜。60年代中期IBM耗资50亿研制的IBM360系统,按计算能力计算的话,现在只值3美分。

实际上,芯片行业、电子行业的巨头们,从来不害怕这个趋势,相反,他们积极利用这个趋势。在90年代末,Intel就力推低价电脑,试图把价格降到600美元以下,在21世纪初,这个价位进一步降到200-250美元。当年,OLPC积极策动“一百美元笔记本”,英特尔则在印度、墨西哥推动Community PC,在中国,主要与海尔推动农村电脑。2007年,Intel与中国政府联合推广Classmate PC,价位在200美元,以帮助中国基层教师与学生用上电脑。

著名的松下电器的创始人,松下幸之助的理念则是,“把大众需要的东西,变得像自来水一样便宜。”除了上游产业迎合这个趋势,在下游中,康柏、DELL、神舟都以低价闻名,并由此具备向上游厂家的价格谈判能力。显然,它们不但没有损坏整个PC行业,反而极大地发展了PC行业。

难道,芯片行业与电子行业巨头对低价的观念与实践,不足以说明低价并不是行业的死敌,而是行业的利器吗?这背后的原理就是低价带来更大规模的使用人群,利用规模效应,来抵消价格下降,获得更大的利润。

既不了解市场,又不了解科技史,那么,必然的一个结果就是,不了解价格在科技市场中的作用,不懂成本、利润,价格的信号传递与资源配置作用。实际上,价格是一种信息机制,它反映了消费者的需求,把需求传递给上游的资源分配,进而调节行业的发展方向。

根据摩尔定律,当价格不变时,约每隔18-24个月,性能也将提升一倍。反过来说,如果消费者所需要的手机性能,没有18个月翻一番,那么,价格必然保持不住,会越来越便宜。

在手机领域,目前,手机性能的提升,受限于电池等环节,已经变缓。苹果6能玩的游戏,苹果5也能玩;三星S6能使用的APP,放到S4甚至S3上一样运行。既然如此,消费者购买更强性能手机的需求就降低了,手机厂家采购更强芯片的动机也降低了。所以,从这个意义上说,小米的存在,是通过消费者对手机性能与价格的抉择,把市场对行业发展的方向选择传递给上游厂家。

这个趋势在科技史并不是第一次出现。

在上世纪90年中,出现了第一代3D显卡。3DFX公司的Voodoo与其后NVIDIA公司的riva128,需要1000元,还需搭配较好的CPU与内存配置。而现在,一般人使用的显卡只需要500元。除了摩尔定律的作用外,另一个原因就是显卡的3D能力,已经逐步超过消费者的需求——在1080p的屏幕上实现每秒40帧,已经不需要太好的显卡。于是,通过价格机制,需求传递到上游厂家,资源被投向CPU领域,投向移动领域。

不过这个状态即将改变。最近,被微软收购的Oculus Rift以及三星等厂家的虚拟现实头盔,逐渐成为热点,可以预见的是,消费者对显卡的3D能力需求,会迅速地提升。因为在虚拟现实中,需要同时渲染左右眼两幅画面,为了不产生眩晕,帧率也要求更高,这都提出对显卡更高的要求。而且,在虚拟现实中,浸入感、真实感会要求更高的特效水平,比如更真实的毛发运动,更真实的光线效果,更真实的物理效果。这就意味着,对消费者来说,显卡3D能力的边际效用提高了,消费者就会愿意承担更高的边际成本,于是,消费者会提高显卡的预算。而在此之前,为什么要那么好的显卡呢?

所以,价格机制,反映了消费者、市场对技术方向的选择。

在真实市场中,众多公司在市场中竞争、试错,以适应消费者的需求。这种机制的代价是极大的,有巨大的研发投入收不回来,项目失败,甚至公司破产。计划经济者,对这些浪费从来都是深恶痛绝的。

在作者观念中,创新是一种计划经济的、占有道德高点的行为,下游应该为上游贡献,这类计划经济观的类似表述,中国人可谓耳熟能详。比如,国家投了那么多钱,搞了一个某某标准,不能浪费,所以,一定要上自己的标准,一定要禁外国的标准。这个主语是国家。当然,那篇文章不好意思用国家当主语,更不可能用资本家当主语,但主语换做“上游厂家”,虽然更加迷惑人,但终究本质是一样的。那么,北斗同样用了这么多钱,手机厂家是应该为了低价格,不要这个芯片呢,还是政府为了保持上游厂家的利润而强行摊派这个芯片呢?如果不考虑北斗的利润,消费者为什么要考虑高通的利润呢?

实际上,如果高通破产了,正是市场机制的优点,而非缺点,证明了高通的方向,不符合科技行业未来的发展方向。科技史中,不乏类似案例。为了在计算机技术上赶上和超过美国,1981年,日本雄心勃勃,以政府为主导,开始研制第五代计算机。与此同时,PC系统与网络化在美国兴起。十年后,在耗资4亿多美元之后,日本政府不得不终止该计划。

与计划经济观念不同,市场经济观念认为,这些浪费,是技术发展的必要过程。从这个角度,文章更深层次的缺陷在于,缺乏对市场经济机制的了解。作者以高端产业链的利润为理由,批评下游产业,这看起来是为了科技市场的健康与可持续发展。实际上,文章的思想底色却是苏联式的创新模式与工业模式,本质上是计划经济的底色。

文章引用美国知名学者麦克尔·R. 所罗门的《消费者行为学》里所谓成熟消费者的概念,认为“社会公民,了解企业采用这些战术的消费者行为基础,也有助于我们在必要的时候,呼吁政府适时采取措施,限制那些有损我们利益的企业行为”。

或许我孤陋寡闻,不知道什么所谓的消费者道德,但我知道,自私自利的经济人是现代经济学的基石,在这个基础上,建立起了整个现代经济学的大厦与市场经济。而另一句堪称经济学基础的名言也告诉我们:“我们所需的一日三餐,不是来自屠夫、酿酒家或面包师的施舍,而是来自他们为了自己利益的打算。”

所以,买小米,使用Uber与滴滴专车,都没问题,只要你能从中得到好处。那么,这就注定对芯片行业,对交通行业,没有任何伤害,相反,会使那些陈旧的、落伍的,或者不该深入的行业方向被淘汰掉。

来源:腾讯