网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月10日漏签0天
程序员吧 关注:278,100贴子:1,385,491
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 6回复贴,共1页
<<返回程序员吧
>0< 加载中...

开个帖子说说面试那回事

  • 取消只看楼主
  • 收藏

  • 回复
  • Blanshard
  • 技术总监
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
工作十年了,勉强算是技术这条路的前辈,也做过PM,做过MANAGER, 国内国外的简历筛选,电话面试,技术面试也都没少干.
最近比较空,又在没有目标的混沌期,所以趁着空的时候开个原创帖子说说面试那回事以及一些自己常用的面试题,希望能对还在读大学或是还在找工作的朋友有些帮助。 非牛,自家事自家知,自觉离牛人还差个十万八千里,只能抛砖引玉了,希望大家都能百忙之中多些原创,多些相互之间有帮助的讨论。
鉴于楼主个人工作经历所限(混过的几个公司都是万人以上大型外企) ,以及楼主主要做嵌入式,所以面试经历以及提到的面试问题肯定不适合所有人,大家选择性的看看就好,写得不好的也请轻喷。


  • Blanshard
  • 技术总监
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
先说面试之外的一些东西。从简历开始,有些老生常谈,而且很多网站都有模板。有过一些找工作经验的人可能会不屑一顾,请略过。
说说自己的喜好,简历不管中文还是英文,一般一到一页半最佳,少于一页的请尽量填满,在校生经验少,请填充些比如和工作相关的课程以及课程项目经验或者自己平常动手写的程序之类。RCG 本科GPA小于3.3,研究生小于3.5的基本就别写了,副作用更大一些。比如两份简历,如果学校啊经验啊都差不多,一个GPA 3.2一个3.6如果我选一个电话面试我一定选那个3.6的,如果你不写,倒是很可能会有电话面试,至于电话面试中问不问是另外一回事,你电话面试表现好即使GPA很差一样会有on-site面试。
字体不要太小,不要觉得有好多东西要写就满满的写满两页,筛选简历的时候基本几十上百的看,每份简历也就停留一分钟的事,太多东西容易没有重点,很难让人耐心的看完。个人觉得如果和工作不是很相关的东西就不要写,比如有些勤工俭学在超市,餐厅打工之类的基本会被无视。
再说一句,在校的童鞋们,经验很重要,所以在校的时候尽可能的找些项目做做,不管是帮老师或师兄师姐打下手,还是自己有能力接接校外的项目,这个不光能锻炼你的能力还是你简历上的亮点,以及最后on-site面试可以和面试官侃的东西。
选好简历,我一般会发email或打电话约电话面试的时间,一般来说约好了时间就尽量不要改动除非有急事,因为俺们也有自己的工作要忙,要写code要开会,另外不要约好了时间打过去的时候你有别的事要求改时间,一般我都不会再打,除非你特别牛。。。碰到过好多这样case, 约好时间我打电话,对方说在火车上,或者是睡过了,还没起床,问能不能改时间。。。


2025-05-10 20:57:37
广告
  • Blanshard
  • 技术总监
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
继续码然后睡觉。。。
======================
关于简历补充两点,一是简历上技能方面请尽量避免诸如熟练使用office word, excel之类的(这个还有人不熟练使用么?), 其他的一些编程相关的软件,IDE比如VS, Eclipse, version contro的比如Mercurial, Git, CVS, SVN基本也没啥用,这是程序员需要懂得最基本的东西, 另外一个关于哪些懂得语言需要列上去,并不是越多越好,而且最好标出水平程度,不要把所有知道一些皮毛的,C, C++, JAVA, .NET, PYTHON, PHP, JS都列上去,万一被问到一个你不怎么熟悉的就歇菜了。
好了,说完简历开始说说电话面试。不同公司电话面试形式不同,有的公司电话面试是非技术的,比如HR啊或者manager面,基本不涉及技术层面,这里不提。只说说技术面试。
根据应聘者的工作经验多少不同,面的东西也不同,一般来说如果工作经验超过两年,俺会对应聘者做过的项目来问,用到的技术啊,他/她在项目中担当过的角色呀,碰到哪些难题他/她是怎么解决的之类的,嵌入式方面一般会问到项目中RTOS/Kernel是in-house built的还是open source, 项目中用到多少tasks, 如何实现的semaphores, 有哪些主要的Interrupts, interrupt latency大概是多少,是怎样解决latency的问题的。对有经验者一般不会问C的问题。
下面主要说说RCG的电话面试,和有经验应聘者的面试类似,开场一般也都是先问问简历上的东西,拉拉家常扯扯蛋,学校里做了哪些项目,career计划之类的,然后会介绍下这个职位的要求以及日常任务(WOW, 哈哈),毕竟选择是双向的嘛,我就碰到一个Purdue的牛女打击了我一次,还没开始面技术呢,刚介绍完职位,她就说,我对嵌入式不感兴趣,我希望去的公司是FB和TWITTER做social media,靠,也不知道这个简历HR是怎么弄过来的。。。
电话面试一般一个小时,扯个半个小时开始面技术问题,对RCG,主要问C和embedded的一些很基础的问题,也许你任何一般教科书上都能找到答案,但你一定要对C有比较深的理解和一定的编程经验才会回答到点子上,说说俺偶尔问的问题:
C相关的:
1. 什么时候需要用到keyword static?
2. keyword const是什么意思,我们为什么需要用到它?
3. Macro和function相比有哪些优点,举个例子你为什么会用到它。
4. 指针的问题一定会问,比如指针是如何初始化的?const char * p和char const * p有何区别?
5. 什么时候需要不能用type cast?
Embedded相关的:
1. 我们什么时候需要用到volatile变量?一个变量可不可以定义为const volatile?
2. 什么是hardware interrupt和interrupt latency? 引申问题为如何降低interrupt latency?
3. 什么是FIQ和IRQ,他们有什么区别?如果这个问题回答出来,可以接着引申ISR和普通的C function有什么区别?
4. 什么是ROTS, RTOS中的scheduling如何实现?如何实现semaphore? Virtual memory和kenerl paging是什么意思?
学C和嵌入式的同学请对号入座,看看如果你不查书,不上网查大概能回答出来多少?一般来说不要求回答的很正确,但通过问答至少可以知道应聘者对C和嵌入式的理解程度。
所以劝童鞋们学习的时候不要囫囵吞枣,一定要把基础打牢吃透.


  • Blanshard
  • 技术总监
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
再补充个简历的小建议,很多时候大家都是一份简历多投,广撒网无可厚非,撒的范围大了大小鱼总能网到3,4条。但如果是真正自己很想去的公司,或者是别人内推,一定要根据职位要求针对性的改简历,改完之后最好找有经验的朋友帮忙修改一下。
应聘者大多死在哪一关?简历筛选,举个俺们招人的例子,假设100份网投的简历,这100份简历会先经过HR的筛选,直接砍掉90份。。。然后剩下的10份才到技术人员手中进一步筛选。HR大多没有任何技术背景如何筛选?学校,级点,关键字。所以针对职位要求修改简历非常有必要,尽量把自己的背景往职位要求上靠。我自己找工作的习惯是把想去的公司和职位列出来,每个职位改一次简历,成功率会高很多。
剩下的10份简历,技术人员可能会再筛掉个2,3份,然后电话面试, 剩下四五个人再on-site面试,看组里要招几个人,这四五个人中也许选一两个,都不好的话也许一个都不要。
上面说到电话面试,每个人的习惯不同,我一般会比较直接,如果觉得不错,会在结束的时候直接说觉得挺好,会有人再联系他/她安排下一步面试或笔试,如果一般的话就不了了之或是给对方一点建议怎么加强。


  • Blanshard
  • 技术总监
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
电面之后如果觉得应聘者不错基本下一步就on-site了,但有时候会加一轮笔试,比如不错的应聘者比较多,或者应聘者水平在平均线,比较纠结。on-site是比较耗费资源的事,应聘者如果不在附近,经济上说要负责因聘者的机票,宾馆,吃喝,面试的时候也要大概5,6个面试官抽出时间。
闲扯下笔试的形式,行业内笔试的形式五花八门,国内考卷式笔试居多,拉一堆应聘者,每人一份卷子,然后规定时间做完,负责笔试的再根据笔试的结果筛选。现在比较流行的还有在线笔试,开先河者主要是google, amazon.基本电面的时候,提前让你开个网页,边面边让你写程序,压力其实满大的觉得要求深厚的算法功底。大家有兴趣的可以去搜一下,这方面的文章帖子比较多,俺就不多说了。
我们的笔试形式有些不一样,因为嵌入式这行对算法有些要求但并不那么强烈。我们更注重对整个系统的理解以及设计。如果要求应聘者笔试,我们会通过email发过去要求,设计一个简单的嵌入式系统,时间一般给一到三天,看系统难易程度。你可以参考技术书,可以网上搜索,当然也不能阻止你作弊找人帮忙。coding的要求包括:要能实现个比较简单的kernel以及正确的task scheduling, 设计好你需要实现哪些task, 他们的priority如何来安排,task之间如何通信,系统有哪些必须的interrupt, 你怎样会处理这些interrupt等等。code要尽量写得简洁且结构化,因为时间充足,一些纯C的function有办法调试的话尽量去调试一下,尽量避免一些简单的语法错误,程序中在必须的地方要有合理的注释等等。总之,笔试主要看你对系统的理解,C或C++的功底以及data structure的应用等等。
电面或笔试过后就是最终的on-site了,后面会说说on-site的一些技巧,常见的技术题目以及一些behavior question啊等等。


  • Blanshard
  • 技术总监
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
鉴于吧里还是学生的比较多,很多童鞋希望得到一些关于大学计算机学习的一些建议,这楼就聊聊这个话题。
首先俺本科,研究生都是读的EE,所有关于程序的东西基本都是自学来的,非科班出身,如果说得不好请大神指正 :)
很多童鞋问关于选C++还是Java,个人以为如果你没有任何程序基础,C不要跳过,即使你最终找的工作跟c没任何关系。
有了一些c的接触之后,C++, Java任选一个,到底是c++好还是java好,这个争论已经存在好多年了。个人认为没有好还之分,只有适合不适合你。看你以后想做的方向,比如你喜欢偏硬件一些,比如嵌入式,驱动开发,操作系统开发,或者大型游戏开发,人工智能,机器人之类的,那就C++. 如果你想做Android开发,大数据,云计算,Social media之类的大型网站开发那就Java.
语言只是工具,C++稍难比java复杂点因为灵活度高,Java的人转c++刚开始会有很多不习惯,c++转java稍微好一点。
从找工作上来说,十年前的是C++好一些,现在个人认为Java好一些。 这和IT的发展有很大的关系,十年前是硬件和操作系统的黄金时代(Intel和MS最辉煌的时候),但这几年以及下一个十年用户和数据是王道,
硬件和OS逐渐变成一个载体。便携硬件设备和智能家居也许这两年会火一点,但一样不过是为了取得用户群和数据。 MS收购诺基亚,微软收购摩托罗拉和现在的NEST是看中了能赚多少钱?当然不是。FB收购Whats App也不是因为利润,不过是为了灭掉一个对手以及获得更多的用户。
扯得有点远了。。。Python其实也不错,在校有精力的话也可以看看,语法和数据结构足够简单,而且功能也很强大。喜欢做网站的话,学学Django,可以让你对MVC有个深刻的理解。个人偏见,我不喜欢.net虽然也写过asp,学过c#。觉得它有点鸡肋(平台限制,太封闭,以及MS在走下坡路),前面我记得吧里有个在微软的朋友还抱怨没Java经验,不好跳槽。
CS核心课程,数据结构,算法,操作系统一定搞懂搞精。还有数据库,计算机结构,编译原理俺个人认为没有前三个来的重要,但也会对你职业有很大的帮助。
如果不是CS科班,或是培训出来,也请不管是学习的时候还是工作的时候把这几个核心的东西补上,网上的材料和视频很多,自己找找。如果英文好,MIT的开放课堂很好很强大。
学算法和数据结构的时候存在个刷不刷题的问题,我的个人意见是刷,你刷的多,总比你刷的少在算法上理解的更深刻,但千万别死记硬背。。。我记得很早以前看过一个帖子,有个童鞋问每天需要背多少代码。。。差点昏倒了。刷的时候多看看别人的讨论,无论国内国外的,cs没有国界。leetcode是俺比较喜欢的oj网站,讨论也比较多。 百度和google是你最好的助手,stackoverflow是最好的讨论区,基本你能想到的问题你都能找到别人的讨论和解答。
除了课程的那基本书,课余或快毕业了要面试的话有空看看CC150(Cracking the coding interview 150)也不错,我记得国内好像有翻译,但我不记得书名了也不知道哪有卖,可以网上找找电子版。这本书其实并不是较你有哪些面试题你可能会碰到,而是教你解决问题的方法,如何思考。
上面在说刷题,但请记住,刷题不是你的全部,除了面试之前或参加竞赛,请只花费很少的一部分时间。 因为并不是所有人努力了就能拿ACM的全国大奖,或是能得到国外的FLAG,国内的BAT面试。理想是理想,生活是生活,程序员这行和所有其他的行业一样,在金字塔顶端的只是很少一部分人。
多积累经验,有机会跟老师混项目是最好的,没钱拿打杂也可以。有志同道合的朋友可以一起搞个小工作室,无论尝试些手机APP开发啊就,接些网站的活都对你练习你学校学校的知识,接触社会,积累经验有作用。也能给你简历润色不少。楼主虽然本科EE,但当年大部分时间都花在了写程序,接项目,赚钱上。搞过工作室,开过小公司。 虽然创业失败,大四找工作的时候,简历拿出来真的很能唬人。有机会也参加点开源项目,俺一直认为好的程序员要懂得开源,共享,和协作。 多一点分享,少一点无脑乱喷。
培养自己的CS素养,也许有人说CS就码代码呗,要啥素养,不然,很多时候面试和相亲差不多,就是个看对眼部对眼的过程。技术过关了,你和面试官闲聊的时候,就会暴露你在这行的素养,有空多看看书,多关心关心这个行业的风向,重要事件之类的,面试的时候也会有很多谈资。 这个方面前面@恋夜H诗 说得很好,推荐的书的很详细, 俺就不班门弄斧了。
积累人脉,很多程序员都是宅男宅女,往往忽略了人脉的重要性。 但这个往往是对你找工作,职业发展最重要的。 前面也说了,找工作的时候90%是死在了HR的简历筛选上,所以内推真的很重要,尤其如果你的学校不是那么出众,那么很多大公司你可能根本就没面试机会,HR那边就直接刷下来了。 而如果你多认识些师兄师姐呀,或是因为项目啊,甚至是bbs,论坛之类的认识人能帮你内推,至少你能拿到个笔试或者电话面试的机会。
先扒这么多吧,各位大神畅所欲言。本来还想继续侃侃现在热门的几个方向的,一看已经不早了,改天再说。
定好目标,坚持这个目标,大家一定都能成功!程序猿们和程序媛们,加油!


  • Blanshard
  • 技术总监
    12
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
度假回来,把欠的最后on-site部分补全。
============================================================
关于最后的on-site面试,不同的公司区别很大,说说我们的一般面试流程。
on-site一般由5-6个面试官组成,每个人一个小时。也就是说加上中午的一小时午饭,差不多你全天都在公司被狂轰滥炸。所以前一天要要睡好,养足精神:)
面试着装,虽然是程序员,但还是推荐男生西装或者至少要衬衫,西裤和皮鞋,女生职业套装。楼主大学毕业的时候也很是纠结到底要不要穿西装,最终还是选择了西装。说说推荐正装的理由,虽然是技术职位,也许也上班之后再也不用穿正装,但正装会让你显得很精神,第一印象很重要,面试就像相亲一样,也是个看对眼的过程。另外正装也是对面试官的一种尊重,在国外的话尤其重要。
面试一般来说会考察以下的一个或多个部分:
简历的内容的陈述以及针对性提问,
技术问题,
behavior question(行为问题),
brain teaser(脑筋急转弯),
problem solving skill(解决问题能力),
逻辑或数学概率问题
每个面试管都有自己想要考察的部分,比如hiring manager可能不大会问具体的技术问题,大多盯着你的简历上提问,以及问一些行为问题或者解决问题能力。我比较倾向于三个部分,background介绍以及以往项目的提问大概会占15分钟,技术问题(whiteboard coding)30分钟,15分钟闲扯以及让应聘者提问。
前15分钟的背景介绍和项目提问,一般会问问你简历上的东西,比如介绍下xxx如何实现的,项目过程中碰到啥问题?为什么要这样做?等等。这里对正在找工作的童鞋的建议是,一定要精心准备自己的背景以及项目,因为每个项目都有可能会被问到,似是而非的东西不要写在简历上,可以对着镜子练找朋友假装面试官可以。
说说技术问题吧,根据面试者的工作经验不同,技术问题也五花八门。每个面试官基本都会有一套自己的题目,然后随机的出两三道题。对于俺们的面试来说,whiteboard coding是一定会有的,所以大家不要太依赖IDE,偶尔在白纸上写写code还是挺有帮助的。我一般不会太纠结你的一些syntax的错误,或者一些基本API记不得了我也会给你提示,但如果你指针什么的都搞不清,基本是致命的,因为嵌入式这块的程序,指针,数据结构尤其重要。
一些基本的C程序的数据结构和算法会问到,都很基础如果你平时稍微练习过,对CS专业的不会造成什么问题,基本的题目比如"给你一个数组,你让找出K个最大的数放到一个新的数组里“,”找小于指定数字的质数“,"bubble sort或者heap sort的算法”,和嵌入式相关的"register的位操作, set/reset", 有时候也会给你点简单的程序,让你看看有啥问题,比如
假设一下程序的ptr指向硬件的register,这个程序有什么问题?
int square(volatile int *ptr)
{
return *ptr * *ptr
}
以下程序定义了一个ISR (interrupt service routine), 有什么问题?
_isr double compute_area(double radius)
{
double area = PI * radius * radius;
printf(“\nArea = %f”, area);
return area;
}
总的来说,技术问题也就大概30分钟左右,不会搞很复杂的复杂的算法,比如让你实现个二叉树之类的,主要还是考你对很基本的算法/数据结构以及嵌入式的理解,啃透了才是王道。
最后的闲扯部分,面试的童鞋请准备3个左右的问题,一定要问,让他们感受到你对这份工作是真的很有兴趣和热忱。说几个以前自己准备的问题给大家借鉴,比如“这份工作有挑战性的地方在哪”,“这个职位以后的晋升途径大概是什么样子的”, "这个职位所在的组大家如何协作以及氛围如何“,"你觉得我有哪些需要提高的地方“等等。 如果你的技术够牛,这些问题可能不起任何作用,但如果大家觉得你表现一般,比较纠结于可要可不要的时候,你对这份工作的兴趣和热忱就会起到很大的作用,有时候甚至是决定性的。
面试结束之后,大家会碰个头,大概讨论一下面试的情况,打个分决定要还是不要。一般任何一个面试官都有一票否决权如果这个人强烈反对并有理由。
总之面试的过程中要积极,乐观,诚实,如果技术问题你确实不懂,需要提示那也老实的说,不要不懂装懂乱搞一通。
面试之后给你发offer谈薪资,有快有慢,快的话第二天就通知了,慢的话一两个星期是正常的如果还有其他的应聘者需要面试。 我收到的最快的一个offer, 是出了公司, 刚到机场对方的HR的电话就到了,开始说薪资待遇以及问我什么时候有空再过来要不要安排房产中介带我开始看房子。前段时间也面过一个牛人,面试结束之后,大家讨论的不是这个人我们要不要,而是如何能让他接受这个职位。
薪资上面,对于学校新出来的去外企基本没什么讨价还价的余地,因为薪资体系都已经定了,而且除非你够牛,否则基本是你爱来不来,要来得大有人在。。。注:即使是新毕业生,大牛不在此列。。。我见过有人面了7个顶级公司拿了6份offer,然后不停的几个公司之间讨厌还价好几轮的,最后薪资真的巨牛无比。。。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 6回复贴,共1页
<<返回程序员吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示