面试问题汇总 精选 分析 解答 职业规划 part 2

面试困惑问与答(2)——感觉挺好,为啥被拒了?

问:技术面试的时候,题目挺简单的,我觉得自己都做出来了。可最后怎么还是被拒了啊?

答:面试被拒有很多种可能,比如面试官认为你性格不适合、态度不够诚恳等等。但在技术面试过程中,这些都不是最重要的。技术面试的面试官一般都是程序员,程序员通常没有那么多花花肠子,他们只认一个理:题目做对、做完整了,就让你通过面试;否则就没戏。所以碰到简单题目却被拒的情况,应聘者还是要检讨题目是不是真的做对、做完整了。

               举一个微软面试开发工程师时最常用的一个问题为例:把一个字符串转换成整数。这个题目很简单吧?很多人都能在三分钟之类写出如下不到十行的代码:

int StrToInt(char* string)

{

       int number = 0;

       while(*string != 0)

       {

               number = number * 10 + *string - '0';

               ++string;

       }

 

       return number;

}

               看了上面的代码,你是不是觉得微软很容易搞定?如果你真的这么想,不好意思,你可能又要被拒了。

通常越是简单的问题,面试官的期望值就会越高。当题目简单的时候,面试官就会期待应聘者能够很完整解决问题,除了完成基本功能之外,能够考虑各种边界条件、错误处理等各个方面。像这道题,面试官不仅仅只是期待你能完成把字符串转换成整数这个最最起码的要求,而是希望你能考虑到各种特殊的输入。如果我是面试官,我至少会期待应聘者能够在不需要提示的情况下,考虑到输入的字符串中有非数字字符和正负号,要考虑到最大的正整数和最小的负整数,以及溢出,同时还要考虑当输入的字符串不能转换成整数时,应该如何做错误处理。当把这个问题的方方面面都考虑到的时候,你也就不会再认为这道题简单了。

除了问题考虑不全面之外,还有一个面试官不能容忍的错误就是程序不够鲁棒。以前面的那段代码为例,只要输入一个空指针,程序立即崩溃。这样的代码如果加入到软件当中,将是灾难。因此当面试官看到代码中对空指针没有判断并加以特殊处理的时候,通常他连往下看的兴趣都没有。

当然,不是所有与鲁棒性相关的问题都和前面的代码那样明显。再举一个很多人都被面试过的问题:求链表中的倒数第k个结点。有不少人先在网上看过这个题目,因此知道思路是用两个指针,第一个指针先走k-1 步,然后两个指针一起走。当第一个指针走到尾结点的时候,第二个指针指向的就是倒数第k个结点。于是他大笔一挥,写下了下面的代码:

ListNode* FindKthToTail(ListNode* pListHead,unsigned int k)

{

       if(pListHead == NULL || k == 0)

               return NULL;

 

       ListNode *pAhead = pListHead;

       ListNode *pBehind = NULL;

 

       for(unsignedint i = 0; i < k - 1; ++ i)

       {

               pAhead = pAhead->m_pNext;

       }

 

       pBehind = pListHead;

 

       while(pAhead->m_pNext != NULL)

       {

               pAhead = pAhead->m_pNext;

               pBehind = pBehind->m_pNext;

       }

 

       return pBehind;

}

写完之后,应聘者看到自己已经判断了输入的指针是不是空指针并做了特殊处理,于是心里洋洋得意以为这次面试必定顺利通过了。可是,他没有想到的是这段代码中仍然有很严重的问题:当链表中的结点总数小于k的时候,程序还是会崩溃。因此,几天之后他收到的仍然不会是Offer,而是拒信。

要想很好地解决前面的问题,最好的办法是在动手写代码之后想好测试用例。只有把各种可能的输入事先都想好了,才能在写代码的时候把各种情况都做相应的处理。写完代码之后,也不要立刻给面试官检查,而是先在心里默默地运行。当程序运行之前想好的所有测试用例都能得到合理的输出时,再把代码交给面试官。做到了这一步,通过面试拿到Offer就是水到渠成的事情了。

 

博主何海涛对本博客文章享有版权。网络转载请注明出处http://blog.csdn.net/cadcisdhht。整理出版物请和作者联系。有任何建议或意见,欢迎在评论中告知,或者加我微博http://weibo.com/zhedahht与我交流。



面试困惑问与答(3)——题目没弄懂,可以问面试官吗?

问:面试的时候,面试官突然冒出一个之前没有听过的概念,请问我可以问面试官让他把题目说清楚吗?如果问的话他会不会觉得我很傻?

答:面试和笔试最大的区别是:面试是一个注重沟通交流的过程,而且沟通是双向的。因此面试官可以问应聘者问题,同样应聘者也可以问面试官问题。

               通常在面试环节面试官的一个很重要的任务就是考察应聘者的学习愿望以及学习能力。学习能力怎么体现呢?面试官提出一个新概念,应聘者没有听说他,于是他在已有的理解的基础上问进一步的问题,然后掌握了这个概念。这就是学习能力。通常学习能力强的人具有主动积极的态度。因此建议在应聘过程中碰到不明白的地方多提问,这样面试官觉得你态度积极,求知欲望强烈,这样会给面试结果加分。

               举个例子,google曾经有一道面试题:找出第1500个丑数。很多人都不知道丑数是什么。不知道怎么办?面试官就坐在对面,可以问他啊。面试官会告诉你只含有2、3、5三个因子的数就是丑数。你听了后,觉得听明白了,但不太确定,于是可以举几个例子并让面试确认你的理解是不是对的: 6、8、 10、12都是丑数,但14就不是,对吗?当面试官给出肯定的答复,你就知道自己的理解是对的了。问题问的是第1500个丑数,与顺序有关。可是哪个数字时第一个丑数呢,1是不是第一个?这个你可能也不能确定,怎么办?还是问面试官,他会告诉你1是或者不是丑数。题目是他出的,他有责任把题目给你解释清楚。

               有些面试官甚至故意一开始不把题目描述的清楚,让题目存在一定的二义性。他期待应聘者能够一步步通过提问来弄明白题目的要求。这就是在考察应聘者的沟通能力。为什么要这样考察?因为实际工作也是这样,不是一开始项目需求就定义得很清楚了。程序员需要多次与项目经理甚至客户反复沟通才能把需求弄清楚。如果没有一定的沟通能力,当程序员面对一个模糊的客户需求时,他就会觉得无处下手。

比如最近很流行的一个面试题,面试官最开始问:如何求树中两个结点的最近公共父结点。此时面试官对题目中的树的特点完全没有给出描述。他希望应聘者在听到问题后会提出几个问题,比如这棵树是二叉树还是普通的树。

如果面试官说是二叉树,应聘者可以继续问该树是不是排序的二叉树。面试官回答是排序的。听到这里,应聘者才能确定思路:从书的根结点出发遍历树,如果当前结点都大于输入的两个结点,则下一步遍历当前结点的左子树;如果当前结点小于输入的两个结点,则下一步遍历当前结点右子树。一直遍历到当前结点比一个输入结点大而比另一个小的时候,此时当前结点就是符合要求的最近公共父结点。

如果应聘者问树是不是二叉树的时候,面试官回答是任意的树。此时应聘者可以接着提问在树结点中有没有指向父结点的指针,面试官将会给出肯定的回答。由于树的结点中有指向父结点的指针,因此从输入的结点出发,沿着指向父结点的指针一直到树的根结点,可以看做是一个链表,因此这个题目的解法就和求两个链表的第一个公共结点的解法是一样的了。

我们可以看出面试官给出不同的条件,将是两个两个完全不一样的题目。如果一开始应聘者没有弄清楚面试官的意图就贸然动手解题,那结果很有可能是离题千里。从中我们也可以看出在面试过程中沟通的重要性,当觉得题目的条件、要求不够明确的时候,一定要多提问来消除自己的疑惑。

 

博主何海涛对本博客文章享有版权。网络转载请注明出处http://blog.csdn.net/cadcisdhht。整理出版物请和作者联系。有任何建议或意见,欢迎在评论中告知,或者加我微博http://weibo.com/zhedahht与我交流。


面试困惑问与答(4)——最后该问什么?

问:每次面试的时候,面试官都会问我有没有什么问题要问他。我可以问什么问题呢?

答:面试官让应聘者问问题,主要是想了解应聘者最关心的问题有哪些。因此,首先至少要问一两个问题。不然面试官就会觉得你对我们公司、职位等都不感兴趣,那你来面试做什么?但是也不是什么问题都可以在这个时候问。如果问题问得比较合适,对应聘者来说是个加分的好机会;但如果问的问题不太合适,面试官对你的印象就会大打折扣,相当于跳入面试官的陷阱了。

               先谈谈不适合问的问题。首先是问和自己的职位没有关系的问题,比如问“公司未来五年的发展战略是什么”。如果你面试的职位是CTO,而你的面试官是CEO,这倒是个合适的问题。如果面试的职位只是个程序员,那这个问题离你就太远了,与你的切身利益没有多少关系。再说,坐在你对面的面试官很有可能也只是个程序员,你让他怎么回答这个关系公司发展战略的问题呢?

               其次是问薪水。技术面试不是谈薪水的时候。要谈工资,等通过面试之后和HR谈。这个问题在前面的第一个困惑中已经讲过,不在赘述。

               第三是立即打听面试结果,比如问“您觉得我能拿到Offer吗”之类的问题。现在大部分公司的面试都有好几轮,最终决定应聘者能不能通过面试,是要把所有面试官的评价综合起来的。问这个问题相当于白问,因为问了面试官也不可能告诉你结果。

               笔者推荐问的问题是与招聘的职位或者项目相关的问题。如果这种类型的问题问得很到位,那么面试官就会觉得你对应聘的职位很有兴趣。不过要问好这种类型的问题也不容易,因为首先对应聘的职位或者项目的背景要有一定的了解。我们可以从两方面去了解相关的信息。一是面试前做足功课,到网上去搜集一些相关的信息,做到对公司成立时间、主要业务、职位要求等都了然于胸。二是面试过程中注意面试官说过的话。有不少的面试官在面试之前会对招聘的职位相关的项目会做简单介绍,其中会包含其他渠道无法得到的信息,比如项目进展情况等等。应聘者可以从中找出一两个点,然后向面试官问。

               举几个我当时来思科面试的时候问的几个问题。一个面试官介绍项目时说这次招聘是项目组第一次在中国招人,目前这个项目所有人员都在美国总部。那一轮我最后问的问题是:这个项目所有的老员工都在美国,那怎么对中国这一批新员工进行培训?中国的新员工有没有机会去美国总部学习?最后一轮面试是老板面试,她介绍我要加入的项目组是负责开发思科测试供应商生产出来的网络设备的测试系统。当时我最后问的几个问题是:这个组是做测试系统的,那这个组的人员是不是也要参与网络设备的测试,是不是需要学习硬件测试相关的知识?因为我们测试的对象是网络设备,那么这个职位对网络硬件的掌握程度有没有要求?

 

               博主何海涛对本博客文章享有版权。网络转载请注明出处http://blog.csdn.net/cadcisdhht。整理出版物请和作者联系。有任何建议或意见,欢迎在评论中告知,或者加我微博http://weibo.com/zhedahht与我交流。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js顺序加载

2019独角兽企业重金招聘Python工程师标准>>> js想要顺序加载&#xff0c;分开js代码块&#xff0c;jsp页面在加载的时候&#xff0c;是顺序加载&#xff0c;遇到<script></script>代码块&#xff0c;先加载完成&#xff0c;然后继续往下&#xff0c;遇到…

java swingworker_Java中的SwingWorker

L&#xff06;F物质的输出(因为您对EDT的不确定性有待测试)run:JButton openDialog >>> Is there EDT ??? trueWorker started >>> Is there EDT ??? falsewaiting 30secondsWorker endeded >>> Is there EDT ??? falsebefore JOptionP…

持续交付与滚动升级

介绍 持续交付是频繁对软件应用程序持续更新的概念. 这个想法使在大量频繁的更新面前, 你不必等待在一个指定的特殊时间点, 并且使你的组织在响应过程中变得更好. 一些 Ansible 用户每小时都在部署更新给他们的最终用户甚至更加频繁 – 每时每刻都有代码修改的批准. 要实现这一…

2-05 使用固态存储SSD或PCIe卡

在大量并发的情况下&#xff0c;才能体现固态磁盘的吞吐量&#xff0c;在大并发下提供良好随机io的性能&#xff0c;这正是关系型数据库所需要的&#xff0c;相对应机械磁盘&#xff0c;固态磁盘更容易损坏&#xff08;第三点是固态磁盘的缺点&#xff09;&#xff0c;由于固态…

面试问题汇总 精选 分析 解答 职业规划 part 3

《剑指Offer——名企面试官精讲典型编程题》已经出版 非常感谢博客上的读者&#xff0c;是大家的关心、支持和鼓励让我有信心写完这本书并最终出版发行&#xff08; china-pub互动网、 亚马逊卓越网、 淘宝网、 京东网、 当当网上有售&#xff09;。网友们的鼓励让我在 博客上的…

java 分布式rpc框架_分布式RPC框架Apache Dubbo(一)

4 Dubbo快速入门Dubbo作为一个RPC框架&#xff0c;其最核心的功能就是要实现跨网络的远程调用。本小节就是要创建两个应用&#xff0c;一个作为服务的提供方&#xff0c;一个作为服务的消费方。通过Dubbo来实现服务消费方远程调用服务提供方的方法。4.1 服务提供方开发开发步骤…

轻松获知数据库事务

标题索引事务作用事务流程隔离级别实例验证事务作用事务是确保数据库系统数据的完整性的功能&#xff0c;如现在互联网行业支付业务&#xff0c;不管服务器出于什么原因异常中断&#xff0c;客户要么支付成功要么支付不成功&#xff0c;支付成功数据库金额即会发生变化&#xf…

Python冒泡排序(4)

Python代码&#xff1a; """ 冒泡排序&#xff08;4&#xff09;在未排序的数中&#xff0c;通过两两比较[换位]的方式&#xff0c;将最小的数移至首位 N个数排序&#xff0c;则需要执行N-1轮&#xff0c;第1轮比较N-1次&#xff0c;后续每轮比上一轮少比较1次本…

打印hello world java_java – 如何打印“hello world”?

数字4946144450195624适合64位&#xff0c;其二进制表示为&#xff1a;10001100100100111110111111110111101100011000010101000该程序对每5位组的字符进行解码&#xff0c;从右到左00100|01100|10010|01111|10111|11111|01111|01100|01100|00101|01000d | l | r | o | w | | o…

研发人员为什么留不住

研发人员为什么留不住&#xff1f;(1)——问题与现象 研发团队做为公司的核心&#xff0c;承担了完成项目为公司赚钱的目的。研发人员在公司倍受重视的同时&#xff0c;并没有降低流失率。 问题与现象 以下问题相信您会在朋友口中&#xff0c;甚至自己的公司听到。 老板说&a…

算法与编程--1

1、编写一个程序&#xff0c;将a.txt文件中的单词与b.txt文件中的单词交替合并到c.txt文件中&#xff0c;a.txt文件中的单词用回车符分隔&#xff0c;b.txt文件中用回车或空格进行分隔。 package com.test;import java.io.File; import java.io.FileNotFoundException; import …

Safari支不支持HTML5录音? 现在浏览器中最好的解决方案是WebRTC下的 navigator.getUserMedia API。...

先放结论&#xff1a;Safari支不支持HTML5录音&#xff1f; ——据我调查&#xff0c;不支持。 现在浏览器中最好的解决方案是WebRTC下的 navigator.getUserMedia API。 可是当使用Can I use查看兼容性的时候&#xff0c;我发现 不过这个是有历史原因的&#xff0c;我记得RTC是…

python lambda map reduce_简单了解python filter、map、reduce的区别

这篇文章主要介绍了简单了解python filter、map、reduce的区别,文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下python中有一些非常有趣的函数&#xff0c;面试的时候可能会遇到。今天也来总结一下&#xff0c;不…

面试问题汇总 精选 分析 解答 职业规划 part 4

程序员做业余项目、记笔记和写博客的重要性【经典】 编程是一种创造过程&#xff0c;业余项目允许程序员在没有截止日期或各种限制的条件下&#xff0c;以探索形式编程。业余项目之所以重要&#xff0c;有以下几个原因。 探索新技术 每天都会不断有新技术出现&#xff0c;而…

NB-IOT连接移动onenet平台流程

1. 先创建账号&#xff0c;然后创建产品 2. 创建设备&#xff0c;用ATCGSN和ATCIMI查询NB-IOT的IMEI和IMSI填写上去。 3. 创建好的设备。 转载于:https://www.cnblogs.com/429512065qhq/p/8359247.html

sort,uniq,wc指令简单用法

sort用于排序&#xff0c;可以根据不同的数据类型来进行排序&#xff0c;例如想要查看最后一个登陆的用户信息&#xff0c;可以把last和sort结合起来使用&#xff0c;按照登陆时间排序。 使用sort排序&#xff1a; sort常用参数&#xff1a; -f &#xff1a;忽略大小写的差异 -…

java ejb jsp 架构_JavaEE架构

B/S 体系结构image.pngJava EE 经典架构image.pngJava EE 13规范JDBCimage.pngJDBC 对象与接口java.sql.DriverManager&#xff1a;用于管理JDBC驱动的服务类&#xff0c;当JDBC驱动加载至内存后&#xff0c;DriverManager会自动注册JDBC驱动&#xff0c;然后通过getConnection…

音视频中的CBR,VBR,ABR

视频码率CBR和VBR 固定码率&#xff08;CBR&#xff09;与可变码率&#xff08;VBR&#xff09; 一般在我们输出视频文件的时候都会碰到一个选择即CBR与VBR&#xff0c;CBR的英文全称是Constant Bit Rate翻译过来是固定码率&#xff0c;就是说每一秒种的画面如果看做是一个…

fifo java_java – 如何保证ThreadPoolExecutor中的FIFO执行顺序

我用这行代码创建一个ThreadPoolExecutor&#xff1a;private ExecutorService executor new ThreadPoolExecutor(5, 10, 120, TimeUnit.SECONDS, new ArrayBlockingQueue(20, true));然后,我运行25个任务(T01到T25),所以情况是&#xff1a;>目前正在运行的5个任务(T01到T0…

HihoCoder 1671 DFS

本以为是个简单的水题&#xff0c;好吧&#xff0c;其实就是个水题&#xff0c;虽然我还是…… 题意的理解上有一点小小的问题orz&#xff0c;这里的括号里的字母是可以看成一个整体的&#xff0c;可以看作一个字母来进行反转&#xff0c; 比如说&#xff0c;(abc(de))&#xf…