国外程序员面试经验
导读:面试准备的重要性不用编者多言,大家都很清楚。本文是加拿大的一位程序员所写。大家可以看看国外程序员是怎么准备面试。不管你是否认同他的说法,《诗经》中有句话非常好——“它山之石,可以攻玉”。如果你还有其他面试准备方法,不妨在评论或微博中和大家一起讨论分享。
一、开门见山
一般来说,你(求职者)在面试中会花很多时间谈论以前的经历。如果你还没有想出你的最具代表性的经历/案例,那么你现在是时候该做了。下面有张问题表,虽然很多问题看似比较低级,但相信我,看完这些问题后,你应当反思自己。即便面试时没有碰到类似这张列表上的问题,你在面试也可以用上已准备好的答案。
[wojiushiwo987注:以下是一些常识、目标题]
1.
说说你自己吧
2.
你的短期目标是什么?你2到5年内的目标是什么?
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.
我们为什么要雇用你?
上面这个列表中的问题需要深思和反省才能回答,所以在下一次面试之前很有必要提前想一想。有些问题可以有相同的答案。如果问题答案需要讲述一段故事/经历,你可以按如下方式来做:
1. 20秒描述情况。“代码出问题了,整个团队必须找出原因。”
2. 30秒描述你做了什么。“我认为是内存溢出,我注意到Abstract Member Creation Factory本应该只有一个实例,但它有很多实例”。
3. 20秒描述结果。“我用一行代码解决溢出问题,我们的产品如期上线。后来,我都会先测试确保不会再有类似问题”。
在每次面试前,浏览整个列表并大声练习你的回答。这样做让你在面试中更加轻松自如,你就比其他应聘者有更多的优势。比如,当在回答问题时,其他应聘者可能会先看着天花板说“嗯”,然后开始回忆过去5年中发生的一切。而你则可以微笑地看着面试官的眼睛,再陈述你的答案。
二、事先练习最常用的编程算法,以建立自信
钢琴家在达到下一级水平之前,他们必须先学习一套短曲。这些短曲虽然不曾在聚会上弹奏,但他们要练习特定的部分,比如右手小指和切分音。同理,尽管有些算法你或许没有在你的代码中用过,但它们经常在编程面试中出现。比如:
1.反转单链表;
2.反转字符串或反转段落中的单词顺序;
3.利用星号输出画一个任意大小的圆;
4.整数转换为字符串,数字型的字符串转换为整数;
5.写一个函数,返回任意整数对应二进制形式中的“1”的个数;
6.写一个函数,输出字符串中字符的所有排序。(比如:abc acb bac bca cab cba)
一般来说,可以先不考虑算法的运行时间,都是先用最简单有效算法。然后再尽量减少运行时间。能让算法正常跑起来,总比你花大量时间想一步到位要好。(一步到位的想法虽好,但大部分时候都是事倍功半。)
提示:做练习时,别自欺欺人看答案。
我第一次写“反转单链表”算法是利用课间时间。我并不急,从运行时间较长的方案到优化的方案,我用了半个小时。在验证算法正确无误后,我非常高兴!我知道不看答案我也能解决问题了。(建立自信了!)在面试中,当遇到从未见过的问题时,我以前的经验给了我信心。
三、练习解决问题能力
有些应聘者认为能解决脑筋急转弯问题就有良好的编程技能。如果你也这么认为,那你应当培养猜谜这方面的兴趣和技巧。你可以去图书馆或在网上找这方面的书。然后,挑一些有趣的问题,先别看解答。如果半个小时之内还想不出答案的,才可以查阅解答。
第四、展现出真正的热情
另一个技巧就是要把真正的热情展现出来。作为人,我们应该真诚和热情与他人共处工作。另一方面,我们也要有看穿虚假笑脸的能力(没有这种能力,也需要锻炼出来),所以活出真我很重要。
最优秀的面试官会让你讨论一些你非常热衷的事情,即使有些些事和你所应聘的岗位没有直接关系。然而,大多数面试官却没有这么做。虽然如此,你还是应当好好考虑那些你非常感兴趣的事,并且要抓住机会来和面试官讨论一番。如果面试官允许的话,一定要在面试过程中的前段时间内完成,如果能在第一时间展现出来更佳。面试开始10分钟后的效果可能就不怎么样了,因为面试官已经给你打分了。
想象一下:你第一天去新岗位工作,转向新的开发平台,遇到一些有趣的新朋友,并且了解了公司的生活。(总之)在公司中会有很多让你兴奋的事,要不然,你为什么去应聘呢?
五、睡眠/休息
如果你缺觉的话,“舌尖现象”则会急剧上升,导致你在面试中就不能很好回忆事情。所以,面试前必须有个良好的睡眠。到底睡多长时间最合适呢?请参考此文《你的睡眠时间和睡眠质量达标了么?》。http://www.cdc.gov/sleep/how_much_sleep.htm
编者注:“舌尖现象”非常普遍,它是因为大脑对记忆内容的暂时性抑制所造成的。这种抑制来自于多方面,比如对有关事物的其他部分特征的回忆掩盖了所要回忆的那部分特征,又比如回忆时的情境因素以及自身情绪因素的干扰等等。而消除了抑制,(如经他人提示、离开回忆困难时的情境、消除紧张情绪等,)舌尖现象往往就会消失。很多人都有过这样的经历:一些平时很简单、很熟悉的字、单词或公式等话到嘴边就是无法记起,考试过后却突然忆起。再比如,遇到一个熟人,就是叫不出名字来。心理学上称这种特殊现象为记忆的“舌尖现象”,意思是回忆的内容到了舌尖,只差一点,就是无法忆起。
以上内容引自:http://www.jobbole.com/entry.php/253
附第2部分的6个简单问题的源程序:
1.反转单链表;
Node* reverseList(Node*pFirstNode)
{
//方法1.新建链表,然后逐个拷贝,第二个数据放置到第一个数的前面,即完成逆转.
Node* pReverseList = new Node;
if(!pFirstNode)
{
pReverseList = NULL;
return pReverseList;
}
if(!pFirstNode->link)
{
pReverseList->data = pFirstNode->data;
pReverseList->link = NULL;
return pReverseList;
}
pReverseList->data = 8888; //边界
pReverseList->link = NULL;
while(pFirstNode)
{
Node* pNewNode = new Node;
pNewNode->data = pFirstNode->data;
pNewNode->link = pReverseList->link;
pReverseList->link = pNewNode;
pFirstNode = pFirstNode->link;
}
return pReverseList;
}
如上图:方法2.
步骤:依次递归….
1)1à3
2)2à1
3) 0à2
Node*reverseList2(Node* pFirstNode)
{
//方法2.就地逆置
if(!pFirstNode)
{
return NULL;
}
Node* p = new Node;
Node* q = new Node;
p = pFirstNode->link;
int i = 0;
while(p->link)
{
q = p->link;
p->link = q->link; //1-->3
q->link = pFirstNode->link; //2-->1
pFirstNode->link = q; //0-->2
}
return pFirstNode;
}
2.反转字符串或反转段落中的单词顺序;
#include "stdafx.h"
#include<iostream>
using namespace std;
//反转字符串示例[源"wojiushiwo987",反转后"789owihsuijow"]
char* reverseString(char* strSrc)
{
intistrSrcLen = strlen(strSrc);
char*strRest = new char[istrSrcLen];
memset(strRest,0,istrSrcLen);
intiStrCnt = 0;
while(istrSrcLen!= 0)
{
strRest[iStrCnt]= strSrc[istrSrcLen-1];
istrSrcLen--;
iStrCnt++;
}
returnstrRest;
}
int main()
{
char*strSrc = "wojiushiwo987";
char*strDest = reverseString(strSrc);
cout<< strDest << endl;
delete[]strDest;
return0;
}
3.利用星号输出画一个任意大小的圆;[百度一下]
//1)如何画圆;2)如何用*画圆;3)
4.整数转换为字符串,数字型的字符串转换为整数;
//字符串转化为整形,2012 360春季招聘已考,以下是简洁版
//整形转化为字符串,各面试宝典中都有涉及,常考
//字符串转整形--简化atoi
int atoi_t(char* str)
{
int iRest = 0; //输出十进制结果...
int istrLen = strlen(str);
int itmp = 0;
while(*str != '\0')
{
itmp = *str - '0';
iRest = iRest*10 + itmp;
str++;
}
return iRest;
}
//整形转字符串--简化itoa【写的太复杂。。。】
char* itoa_t(int iVal)
{
char* strRest = new char[10];
memset(strRest,0,10);
int quotient = 0; //商数
int reminder = 0; //余数
int iCnt = 0;
int itmp = 0;
while( 0 != iVal)//1234
{
quotient = iVal/10;
reminder = iVal%10;
strRest[iCnt++] = reminder + '0';
iVal = quotient;
}
char* strRest2 = new char[iCnt];
memset(strRest2,0,iCnt);
int i = 0;
iCnt--;
while(iCnt >= 0)
{
strRest2[i++] = strRest[iCnt--];
}
strRest2[i] = '\0';
return strRest2;
}
intmain()
{
char* strData = "1234";
int iData = atoi_t(strData);
cout << iData << endl;
cout << itoa_t(iData) << endl;
return 0;
}
5.写一个函数,返回任意整数对应二进制形式中的“1”的个数;
//步骤,整形转化为二进制,转换的过程中记录“1”的个数…
int binaryOneCnt(intiDecNum)
{
int quotient; //商数
int remainder; //余数
int iBinary = 0;//生成的二进制数
int cnt = 0;
int binCnt = 0;//二进制位个数...
while(iDecNum != 0)
{
quotient =iDecNum/2; //4
remainder = iDecNum%2; //1
if(remainder == 1)
{
binCnt++; //判定
}
iBinary += remainder*pow(10,cnt);
iDecNum = quotient;
cnt++;
}
return binCnt;
}
int main()
{
for( int i = 1; i <= 32; i++)
{
cout << binaryOneCnt(i) << "\t";//输出1-32二进制表示“1”的个数...
}
cout << endl;
return 0;
}
6.写一个函数,输出字符串中字符的所有排序。(比如:abc acb bac bca cab
cba)
牵涉算法!
分享到:
相关推荐
该书由盖尔·拉克曼(Gayle Laakmann)撰写,提供了一系列宝贵的面试经验和技巧,以及大量的技术面试题目及其解决方案。 #### 内容概览 本书主要分为两大部分:面试实战经验和具体的技术面试题目。 1. **面试实战...
本书《程序员面试宝典》深入解析了IT行业程序员职位的面试过程和要点,尤其着重于各大IT公司历年来的面试真题。书中覆盖了笔试、口试、电话面试、英语面试,以及逻辑测试和智商测试等多个方面。对程序员岗位的核心...
根据给定的文件内容,无法提供具体的Java程序员面试常问知识点,因为所提供的“部分内容”是经过OCR扫描后未经修正的乱码文本。这些内容无法翻译成有意义的中文信息,也就无法从中提取出任何有关Java面试的知识点。 ...
Java程序员面试宝典第二版的第一章主要探讨了程序员在求职过程中的关键环节和注意事项,旨在帮助求职者,尤其是应届毕业生和寻求职业发展的程序员,更好地理解并应对求职市场。以下是本章涉及的重要知识点: 1. **...
国外程序员刷题欢迎来到 Continuum 的开源存储库以获取面试问题! 这项工作已获得许可 作为初始申请流程的一部分(即在您提交简历时),我们通常希望求职者花费大约 1-2 个小时来回答这些问题。 您应该将这些问题视...
在程序员的面试准备过程...总之,选择合适的程序员面试刷题书籍和资源,结合实践操作和开源社区的学习,能够有效提升面试能力,为成功求职铺平道路。在学习过程中,不断积累和实践,才能在竞争激烈的IT行业中脱颖而出。
在程序员的求职过程中,了解如何有效地在国际平台上展示自己至关重要,因为这往往涉及到与国外公司进行全英文的交流。以下是一些关键的求职策略和技巧,涵盖了求职信(Cover Letter)和简历(Resume Writing)的编写...
随着经验的积累,程序员需要深入理解语言的底层机制,如编译器的工作原理、常见的设计模式,例如虚函数、纯虚函数、函数指针、接口类、工具类、工厂类和Singleton模式的实现,以及内存管理等高级话题。 达到这一...
【程序员简历模板】是IT行业中求职者展示自身技能和经验的重要文档,对于寻找网页设计师职位的程序员来说,一份详实且具有吸引力的简历至关重要。以下将根据提供的【部分内容】,详细解析并扩展简历中的关键知识点。...
总的来说,《C/C++面试宝典》是一本针对程序员面试的全面指南,它不仅包含了大量的面试技巧和实战经验,还涉及了面试的各个方面,包括从准备简历到最终的面试环节,帮助求职者在竞争激烈的就业市场中脱颖而出。...
《编程珠玑》和《微软面试题 100》则包含了许多实际问题和解决方案,适合准备面试时使用。 操作系统原理是每个程序员应该理解的重要领域。《现代操作系统》是一本权威的教材,而《自己动手写操作系统》则提供了实践...
【程序员留学生归国求职指南】 在全球化的今天,越来越多的IT专业留学生选择回国发展,他们在海外积累了丰富的知识和经验,但面对国内的就业市场,可能会遇到一些挑战。本指南旨在为这些留学生提供详尽的求职策略和...
在IT行业中,简历是求职者展示自己技能、经验和成就的重要工具,尤其是对于程序员这一职业,一份精心设计的英文简历能够给雇主留下深刻的印象。"程序员英文简历模板—单页单色风格113.zip" 提供了一个简洁而专业的...
【简历分析】 此份简历是一位名为宸兮创意的应聘者所准备的,主要适用于程序员的职位,...在面试或进一步筛选时,可以关注其是否已经或愿意学习编程语言,以及如何将自身其他领域的经验和技能转化为IT行业的实际贡献。
【开发人员_47_it人员简历_程序员简历模板_计算机相关专业.docx】这份文档是一个典型的IT行业求职者的简历,特别关注的是网页设计师这一职位。简历的结构清晰,包括了基本信息、工作经验、自我评价、教育背景以及...
在面试和投递简历时,展示个人项目、参与过的开发工作和解决过的技术难题,将有助于突出你的专业能力。同时,保持对新技术的关注,如实时渲染技术、物理引擎的优化、跨平台开发等,可以提升你在求职市场的竞争力。 ...
- 英语能力是很多企业非常看重的一项技能,特别是在跨国公司或经常需要与国外客户打交道的企业中。具备良好的英语听说读写能力可以为求职者加分不少。 ### 三、校招与社招的区别 #### 1. **校园招聘(校招)** -...
本压缩包中的"JAVA技术"包含了从CSDN等知名IT论坛精心收集的经典Java文章,涵盖了国内与国外的专家见解和技术精华。这些文章是Java开发者学习、提升技能的重要资源。 在Java的世界里,经典意味着对语言基础、设计...
标题"码农英文简历模板—单页单色风格8.zip"指出这是一个专门为程序员或“码农”设计的英文简历模板,采用了单页、单色的设计风格。这种简洁明了的设计通常旨在突出技术专业能力,而不是过于复杂的视觉效果。"zip...