20141215-Amazon Intern F2F Interview Experence

来源:互联网 发布:java图书管理系统报告 编辑:程序博客网 时间:2024/05/01 08:36

  面试前准备

  面试通知是上周四发过来的,主要是说明了下时间和地点,没什么特别的。实习要求也没什么特别之处,只是写了下基本要求,像VC、C++这样的硬性要求等。这里主要谈谈对于此次面试和之前几次面试类似要求的实习岗位的几点总结吧。

  说实话,以前面试经历还是比较少的,只是暑期前随便投递了一个公司,结果面了两面就过了,也没有再投递其他公司,就这样进到公司实习了。总的来说这次面试经历对我有很大的负面影响,高估了自己的实力,低谷了面试的难度,也没能在面试中认清楚需要提升的地方。所以在后来几次再次找实习进行面试时基本上是完全没有准备的情况下就去面试了。这样导致的结果就是一些基础性知识完全答不上来或者要想很久才答上,而且有的是时候考虑不全。所以,这次面试之前的一天里主要做了一下几个准备工作:

  i. 了解公司的基本情况;(主要是为了应答面试官问及的关于公司工作、自己所期望的工作和将来实际工作是否契合的问题)

  ii. 针对面试岗位要求,上网搜索相应的经典题目,尽量多看、细看;(心理作用比较大一点,猜中面试题目的概率比较小)

  iii. 仔细查看面试邮件,确保时间地点无误。

  由于面试不通过的概率还是有的,所以不要打乱你自己的日常工作及学习进度安排,按部就班的去学习新的知识。


  面试形式

  沟通

  总共有两个考官先后进行面试,主要是针对你所发送的简历中一些你做过的项目(和他需要的能力契合的地方)进行详细考察,比如:简单的介绍下你之前做过的项目(项目简介)、你在这其中担任的角色(有无负责编码)、代码有多少行以及你承担的代码有多少行(衡量你的能力)、项目中的某一个详细点的具体实现(简短地描述清楚)之类的问题。两个考官都有问到,侧重点不一样,一个侧重你对项目的介绍(即从中看出是否真正参与其中并担任了相应的工作),另一个侧重于实现和工作量(即会细化到一些细节);另外,其中一个有介绍将来具体承担的任务,然后让你说说对这个工作自己的设想,具体到你承担的任务。

  coding & 逻辑考察

  coding仍然是没有考察太多,主要是基本的一些经典算法面试题。

  第一个是:两个字符串A、B,A为给定值,非空且不为空串,B任意,判断字符串B是否是字符串A的循环移位,是返回true,否则返回false。例:A=“SomeString” B="eStringSom",返回为true,若B=“String”或其他情况返回false。

  第二个是:实现strcpy(), atoi(), strcat(), memcpy()等中任意函数,当时实现了两个:atoi()  strcpy();

  第一个的思路是创建临时变量str=A+A;//即为(AA)=“SomeStringSomeString”,然后判断字符串B是否为字符串str的子串。主要注意的是:i. 代码要完整,比如你该加的头文件是否#include了,该声明的命名空间是否using了等;ii.异常情况是否考虑到了,比如字符串B为空或为空串,以及字符串A和字符串B的长度是否相等判断;

  #include <iostream>

  using std::string;

  bool CheckSubstr(const string A, const string B) {

if (B == NULL || B == "" || A.size() != B.size()) {

return false;

}

string strExtendA = A+A;

std::size_t found = strExtendA.find(B)

if (found != string::npos) {

return true;

} else {

return false;

}

}

  第二道题看似简单,其实考察了很多知识,包括对这几个函数的理解和对异常情况的考虑等,具体解法大家可以到网上搜索,都有比较详尽地解答,在这里就不给出了。当时还是有几个点没有注意到的,估计应该会减分。所以说基础真的很重要,这个是我又一次认识到的很重要的一点。

  另外对于逻辑的考察主要体现在第一个考官给了一个具体的需求,让我当场给出解决方案,大体是这样的:有四个需求类似的实例,又给了一个UI设计图,UI的展示信息分布完全一致,主要针对不同的实例进行展示。大致的说了下自己的思路和具体的实现,觉得说的还可以,不过现在想想其实还是自己的想法,如果在最后考官说有什么问题反馈的时候和他讨论下,可能无论对于这个问题的分析方法还有印象分数都会很好的。

  第二位考官对于逻辑的考察主要体现在基础的考察,堆和栈的区别,然后给出代码分析。题目和解答各个博客论坛基本都有,这里就不给出了,大家可以看看然后具体思考下,夯实下基础。

  反思

  i. 无论什么时候,要问一问“自己准备好吗?”。看到差距才能有进步;

  ii. 面试技巧固然重要,但是自己的性格培养才是最重要的;

  iii. 适时地总结会对自己的成长很有帮助。


转载请注明出处,http://blog.csdn.net/bayingbf

0 0