Conducting Interview is not cheap and costs both time and money to a company. It take a lot of time to find the right candidate for a job from 100s resume you receive from consultants and agents. They will always tell you that this guy is a Java Guru, this one is SQL Expert and next one is the full stack developer you are looking for. If you have trust them blindly and invite all of them for face-to-face interview, you are going to be disappointed. One of the first thing you should do is to filter candidates who claims to have certain skills e.g. SQL but doesn't have them, the faster you can weed out those candidates the cheaper will be the hiring process. A phone screening interview is just for that purpose, it doesn't cost you much and also suitable for candidate, as they don't have to take off and come down to your office. It's flexible for both the parties. When I phone interview someone, I spent fist few minutes to listen them and then I go for my list of weed out programming question to see if candidate is good enough to spend another 30 to 40 minutes. They have saved a lot of time, where I found out that candidate having words like "Strong knowledge of Java","Exceptional in SQL" and "Programming gurus" fail to answer these simple questions. If you are a candidate and gone through couple of interviews, you might have noticed that almost all interviewers make up their minds in the first 10 minutes. The rest of the interview gives them reasons supporting said decision, but not all is lost. If you ever feel that you have messed up with your chance, try coming of some really good answers on rest of questions, if you can impress interviewer to an extent that encourage you to go deep, you may be able to change his initial decision. To get some feedback and improve upon my method, I have decided to share my list of weed out programming questions (don't bother about sharing questions, I have many similar questions on my secret question bank and you can create them easily as well). I have chosen one or two question from common programming skill set e.g. Java, SQL, XML, Programming, Coding, OOPS, Multi-threading and UNIX. I am looking forward to know what you guys do, what do you ask to check same skill set before calling candidates for face to face interviews. Comment if you agree or disagree.

10 Questions to Start Your Programming Interview

Here is my list of filtering or weed out questions for different programming skills. As I said it serves two purpose, it gives nice warm-up to deserving candidate, make them comfortable but same time weed out programmers who can't programmer or SQL expert who can't write JOIN queries.

In SQL, My first weed out question is asking them to describe a Left Outer Join. They don't have to get it exactly right, I just want to see if they have ever did anything more than a two table inner join. Depending upon their answer I ask them classical SQL queries like write ALL departments and number of employee in that department to verify that whether they only know theory or can apply that knowledge as well. If they use Inner join instead of left outer join they will missed out on departments with no employee.

For a Web Developer the first weed out question is to explain difference between a GET and an POST. Here at minimum I want then to know is that a GET is what you generally see in the URL and a POST is commonly what you see in HTML Forms. Again depending upon their answer, you can also further question about limitation, security and usage of GET vs POST method. This question will give you enough hint that whether they really know something about internet or not.

In UNIX, one of the popular weed out question is rather simple, how do you find a particular process and kill it? Here I expect them to tell me about ps, grep and kill. Also to gauge their level of understanding you can ask them about ps options e.g. what does a, f and e means in ps -afe command. Second level weed out question in UNIX can be about command to find large files in UNIX e.g. files which are greater than 2GB etc. Don't get me wrong but if a person cannot answer these question, it would be difficult for him to work in a project which has tons of process and connected to tons of other server. One counter argument question against my weed out question, I always hear that it would take just 5 minutes to learn those commands, but they fail to answer me, when I said why they didn't spent those five minutes before coming to interview.

 
 

In OOPS (Object Oriented Programming), my weed out question is difference between Class and Object? Here I expect slightly more than the popular definition of classes are blue print to create objects, yes that's correct but how do you know that he understood the concept and not just have mugged it, Ask him to give examples, and then cross question him on that e.g. where does object get created, who creates it etc.

In Programming, particularly when it comes to code, the most popular question to weed out the non-programming programmer is "Fizz-Buzz" test. If a programmer cannot write a Fizz-buzz in 10 to 15 minutes, he probably needs more practice and not ready yet. This is something I don't ask on phone interview but on written test I have before face to face interviews. There has been instances in past before we had a proper interview process of multiple rounds where I had literally asked Fizzbuzz, and their answer took the better part of an hour. Another weed out question in my list for programming is to have them write Fibonacci series and ask them to optimize it. Fibonacci is very common but you would be surprise with number of programmers failing to write in using pen and paper and even on IDE. It also weed out programmers who understand recursion than who doesn't. My experience is the programmer who understand recursion are usually better than those who doesn't. This is where most of natural programmers comes in.

In XML, my weed out question is difference between DTD and XML Schema? Some one may say that it slightly harsh to judge someone's XML skill with just one question, but you would agree that this is a fundamental. I know there are many programmer who has worked in XML and can work in XML but doesn't familiar with this fundamental but shouldn't it's their responsibility to learn fundamental like this, just working is not enough, you also need to fill your gap.

In Java, my weed out question is difference between JDK, JRE and JVM? It's such a fundamental that I expect anyone who has worked or learned Java should know about it. Here I expect that they should mention about some tools which comes with JDK, at least javac (the Java compiler) and JVM, which actually runs every Java program.  One more question in my list to weed out non Java programmer is difference between PATH and CLASSPATH? I have hard time teaching this fundamental to couple of people and have found that if you don't know difference between these two, you will struggle to set-up your project, debugging and fixing those nightmarish ClassNotFoundException and NoClassDefFoundError. It's again a must know detail for any one who claims to work in Java.

In multi-threading be it in Java or any other language, one of the good weed out question is asking candidate to write code to avoid deadlock. You can ask this question differently either by giving him a practical scenario or just asking about how to code so that deadlock doesn't happen. If you have not done many interviews, you will be surprised with how many programmers, with professional experience of 2 to 4 years fail to answer this question correctly.

In data structure and algorithms, the first question I ask to candidate is about how to add or remove elements from linked list , because I believe that as a programmer you must know array, linked list, set, map and string algorithms. If you want to add another level of cushion than you can also ask about how to remove duplicates in array without using any library function. This will give you enough idea whether to proceed further or not.

I know trivia is not a good way to find a programmers, but questions which are closely related to practical experience are good way to weed out someone who claims to know something but not there yet. The best way to find a programmer is to sit down with them and examine their projects, or have them to pair program with you. Ask them what part are they most proud of and ask them what part they would change, why they would change it and how they would change it. Once you do this, other than personality questions their is nothing more that you need to ask to gauge their ability to program. But if you do this with 100 programmers, you are not wasting lot of your time but also your organization time and money. Before you invite programmer for face to face interview, you must ensure they deserved to be there. It's not practical to call all the guys based upon their agents claim only. Let me know what are you set of weed out questions, what do you ask to C, C++, Ruby, Python or JavaScript developer to check whether they deserve your time or not.

Read more: http://javarevisited.blogspot.com/2014/09/10-questions-to-make-programming-interviews-cheaper.html#ixzz3Ef8ZUoPP

appendix:

费波那契数列(意大利语:Successione di Fibonacci),又译费波拿契数、斐波那契数列、斐波那契数列、黄金分割数列。

在数学上,费波那契数列是以递归的方法来定义:

  • (n≧2)

用文字来说,就是费波那契数列由0和1开始,之后的费波那契系数就由之前的两数相加。首几个费波那契系数是( A000045):

0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233……

特别指出:0不是第一项,而是第零项。

源自:http://zh.wikipedia.org/wiki/%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97

10 Questions To Make Programming Interviews Less Expensive--reference的更多相关文章

  1. Finding awesome developers in programming interviews(转)

    英文原文:Finding awesome developers in programming interviews 我曾在一次面试中要求一个很有经验的嵌入式软件开发人员写出一个反转一段字符串并输出到屏 ...

  2. Top 10 Questions about Java Exceptions--reference

    reference from:http://www.programcreek.com/2013/10/top-10-questions-about-java-exceptions/ This arti ...

  3. Top 10 questions about Java Collections--reference

    reference from:http://www.programcreek.com/2013/09/top-10-questions-for-java-collections/ The follow ...

  4. [LeetCode] questions conclusion_ Dynamic Programming

    Questions: [LeetCode] 198. House Robber _Easy tag: Dynamic Programming [LeetCode] 221. Maximal Squar ...

  5. UNIX command Questions Answers asked in Interview

    UNIX or Linux operating system has become default Server operating system and for whichever programm ...

  6. C语言学习书籍推荐《Practical C++ Programming》下载

    下载链接 :点我 C++ is a powerful, highly flexible, and adaptable programming language that allows software ...

  7. Java程序员们最常犯的10个错误

    将数组转化为一个列表时,程序员们经常这样做: List<String> list = Arrays.asList(arr); Arrays.asList()会返回一个ArrayList对象 ...

  8. Java开发人员最常犯的10个错误

    这个列表总结了10个Java开发人员最常犯的错误. Array转ArrayList 当需要把Array转成ArrayList的时候,开发人员经常这样做: List<String> list ...

  9. iOS 10.0 更新点(开发者视角)

    html, body {overflow-x: initial !important;}html { font-size: 14px; } body { margin: 0px; padding: 0 ...

随机推荐

  1. 跟我学android-常用控件之 TextView

    TextView 是Android文本控件,用于显示文字. 我们先看一看TextView的结构(developer.android.com) 从这里我们可以得知,TextView是View的子类,他有 ...

  2. uva 11673 Garbage Remembering Exam (概率)

    题目链接: http://vjudge.net/problem/viewProblem.action?id=42000 该过程为随即过程,因此总期望值等于个单词对应的期望值,即它们wasted的概率 ...

  3. hive 桶相关特性分析

    1. hive 桶相关概念     桶(bucket)是指将表或分区中指定列的值为key进行hash,hash到指定的桶中,这样可以支持高效采样工作.     抽样( sampling )可以在全体数 ...

  4. LINUX系统安装MYSQL命令,纯手打

    1.下载安装包 wget http://cdn.mysql.com/archives/mysql-5.6/mysql-5.6.26-linux-glibc2.5-x86_64.tar.gz    2. ...

  5. underscorejs-pluck学习

    2.14 pluck 2.14.1 语法: _.pluck(list, key) 2.14.2 说明: pluck方法根据key对list数组中的每个对象进行检索,返回检索成功的属性值,否则返回und ...

  6. element的height与width

    关于一个element所有的高度宽度 ele.style.width,ele.style.height:操纵style样式.+"px" offsetWidth.offsetHeig ...

  7. php中的双引号和单引号的区别?

    1.单引号里面的字符串直接全部转义,原样输出(即:单引号内部的变量不会被执行) 2.双引号里面的变量会被替换(即:变量会执行) 例如:$name = 'hello';echo "the $n ...

  8. 适应手机端的jQuery图片滑块动画

    一款比较特别的jQuery图片滑块插件,它不仅在PC浏览器上可以使用,而且更适合在手机端的网页中使用.这款jQuery插件不仅可以定义图片切换的方向,而且可以即时切换图片切换的动画方式,可以有平移.翻 ...

  9. GFStableList Adapter

    STL中,list的优点是插入.删除性能极佳(时间复杂度只需O(1)即可),而且非常重要的在删除节点后,其迭代器不失效,但list查找却不擅长.map由于其实现的数据结构为rb-tree,因此,其插入 ...

  10. 切换samba用户

    打开cmd 输入命令 net use \\192.168.xxx.xxx\IPC$ /DELETE 192.168.xxxx.xxx是linux的ip地址