程序员面试心得【范例6篇】
准备充分,注重基础知识与实战经验,保持冷静,逻辑清晰,善于沟通,适应能力强,持续学习是成功的关键。下面是阿拉网友整理编辑的程序员面试心得相关范文,供大家学习参考,喜欢就分享给朋友吧!
程序员面试心得 篇1
软件开发
作为程序员,接触最多的当然是软件开发了,以下是7条心得:
1、若无必要,勿增实体。
这是奥卡姆剃刀的定义,所谓剃刀就是法则,是奥卡姆这个英国学者提出来的。这个剃刀核心的点在于不要浪费较多东西去做,用较少的东西同样可以做好的事情。放在软件领域,就是不要过度设计,添加当前不需要的功能,也不要一开始就做的非常复杂,难以维护。
不需要用设计模式,就不用硬套。不需要用额外功能,就不要写扩展。用设计模式和写功能扩展,必须要有不得不这么做的理由。
无论是新创建的软件系统,还是添加功能到现有系统中,都应该从一个最简单的版本开始,这个最简版本甚至几乎没有可用功能。然后,再一步步迭代与重构,扩展它的功能,完善它的设计。简单的系统自然而然会演变成复杂的系统,而不是人工注入复杂,影响它的正常进化。
2、日志记录,错误处理。
开发新系统必须要做的一件事就是搭建日志记录和错误处理能力,系统上增加功能也要接入日志记录和错误处理。虽然这不会影响正常场景的功能,但是非常重要。
日志和错误可以告诉我们程序运行的时候发生了什么,程序有没有按照预期工作,通过日志和错误我们可以基本知道程序运行的路径,也可以用来做监控,统计和预警。
3、每行新代码都要能被执行到。
新写一个功能,一定要保证你的新代码都能被执行到,也就是你的测试用例能够覆盖到代码的每一行。有些特别的分支可能很难走到,但你要想办法走到,比如构造符合该分支的请求入参,再比如异常分支可以使用mock工具mock异常出来做触发。
4、一次只改一个地方。
这是种变量思维。在你开发时,发现程序挂了,如果你只改一个地方,很容易定位到问题所在,因为就一个变量,不可能是别的原因了,但如果你改了好几个地方,之前也没有测试,找出原因就会花费你大量的时间和精力。
所以,要小迭代,每迭代一个点确保功能符合预期,再进入下一个迭代,如此重复,而不是一股脑改掉所有的内容。
5、集成测试前要单元测试。
你负责一个单元,你的同事负责另外一个单元,入口侧集成了这两个单元,入口有专门的测试同学来测,以验证整体功能的正确性。如果单元测试充分,就能使测试同学只关注各个单元之间协调的正确性,从而节省整体的时间和复杂度。
6、开发时间往往比预期长。
有时候,你可能会把事情想简单,真正写代码的时候才会发现评估有遗漏,工期会比预期长。
有时候,代码写的非常顺利,测试的时候可能就会被某个不符合预期的场景卡主,需要花很长的时间解决。
有时候,你依赖的下游未能按期向你交付服务,你的开发工作就要延期。
写代码容易,让代码正常无误的跑起来,就比较费劲了,所以评估工作量要给自己留点buffer(缓冲),以应对一些特殊情况。
7、读代码并且跑代码。
对于一段代码,想要理解它做了什么事情。一种方法是阅读它,凭借自己的大脑去得出代码运行的逻辑。
但这种方式并不可靠,毕竟人往往是靠不住的,不过系统是可以靠得住的。
那我们就可以跑这段代码,去分析真实系统环境运行的结果。
职场协作
作为职场人,我的工作除了写代码,还有就是和各个角色的协作,像产品经理,项目经理,其他开发,测试,以下是职场协作方面的7条心得:
1.选择适当的沟通方式。
就沟通效率而言,当面>视频>电话>聊天软件>邮件。
打扰强度和正式程度是反方向。
紧急的问题就当面或视频或电话,抢夺对方的注意力,尽快解决。
重要的结论一定要落在聊天软件或邮件里。毕竟电话没有存档,出了问题没法追溯。
但如果你什么小事都要发邮件,那也太浪费自己时间了,什么事情都要给人打电话,那也容易让别人厌烦。
所以大多数场景,还是聊天软件,你留言,对方看到了再回复,不必把双方的沟通绑定在同一时间段。
2.借助身边人的力量。
有些时候,你做事情可能会卡主,这非常困扰你,而你也毫无头绪。
这个时候你就可以借助下身边人的力量了。
比如一件事你在三个方案里面纠结,你就可以整理好自己的'思路,分析各个方案的优劣,然后带着这些信息和同事或老板沟通,寻求他们的建议。
有时候,你在向他们表达的时候,可能就意识到自己的方向了。当然,你也可以得到不同视角的建议,这对你方案的完善是很有帮助的。
所谓:好风凭借力,送我上青云。
3.善于提问。
很多事情自己是可以搞定,比如读代码和运行代码可以理解这一块逻辑,但这要花很多时间。如果你直接问作者,几分钟内你就可以拿到这些信息。
信息是可以换能量的。所以多提问,多获取信息,你可以少做很多无谓的工作,从而把精力投身到重要的事情上。
4.不轻易承诺。
承诺并能顺利完成事情,是值得佩服的。
但过分过早承诺不适合自己做的事情,对自己无疑是一个负担。如果你本身带团队,对团队也是个负担。
承诺要慎重,如果还不明朗,就带回去再评估考虑下。对外部团队如此,对团队同事也应该如此。
不要给了对方期待,又给对方失望,弄得自己信用也不佳。
5.分享利益。
一件事,如果有他人的贡献,我们要感激这个人,也要分享利益给他。
比如你写的专利里某个人帮助了你,作者中一定要加入他的名字。
比如你在向领导汇报你主导的项目的时候,一定要提到其他参与者的名字。
之前看周杰伦演唱会录影带的时候,有一段是杰伦专门介绍场上乐队各个成员的名字,当时看这段挺动容的,怪不得像方文山,杨瑞代这些人能和杰伦合作20多年。
6.清楚自己的角色,做角色份内的事情。
一张地图上,首先要有定位,然后要有目标,才能去看走什么样的路径。
角色就是这样的定位。你把自己的角色定位成纯开发,一般来讲专注技术就好了。
但如果你想和产品经理更好的沟通,最好还是培养一些产品思维。这样有个好处,就是一些技术类需求,你可以自己判定和定义了,此时你的角色就转换成产品经理了。
如果需求比较多,不能马上都做,需要排下期,周期长的项目还要管理下项目节奏,此时也没有专职的项目经理介入,那你就可以尝试做项目经理的角色。
你技术一路发展,对自己负责的领域了如指掌,你开始接触了一些架构设计和决策的工作,那此时已经有新角色了,就是架构师的角色。
所以一个人是可以有多种角色的,角色决定了职责,因此一件事情中,要清楚自己的角色,做好角色份内的事情,不要越界,也不要失职。
7.让子弹飞一会儿。
如果一件事存在争议,你并不是争议双方的领头人,只是这件事可能会涉及到你落地。那么不要急着去介入具体方案和落地,让他们再争会儿,很可能最终的结论是你啥也不用做。
认知成长
作为终身学习者,职场工作的同时,也关心着自己的成长,以上更多是技能方面的,以下是认知成长方面的7条心得:
1.技术是工具,也可以是资产,还可以是商品。
技术有三个阶段:技术支撑业务,技术驱动业务,技术创造商业价值。这三个阶段技术是分别作为工具,资产以及商品存在的。
我们看到的一个个互联网产品,背后都是由技术搭起来的,技术只是工具。
随着业务发展,逐步沉淀面向某个问题的解决方案,有些以专利的形式体现,技术就成为了资产。
把通用的技术提炼出产品能力,像阿里云的很多服务那样,技术就变成了商品。
2.提升效率。
什么叫效率?
效率就是你完成了多少事,除以你开始了多少事。你开始了一百件,只完成了一件,你的效率就是1%。
所以提高效率的办法,一个是你多完成事,第二个是你少开始事。
3.打造自己的知识系统。
人的大脑天生喜欢记忆结构化系统化的知识。零碎的知识点太多,也只是隐藏在大脑的某个角落,经常被忽视。
关键是建立体系化的知识结构,去帮助生活和工作上的决策。
4.机会留给主动的人。
主动向项目组同步进展,主动向领导汇报,主动把事情推向正确的方向。你会发现自己的运气在变好。
5.凡事需要平衡。
一个算法要想获得更快的时间,势必要牺牲更多的空间。
同样,无论项目方案还是架构设计,都没有对和错,要权衡当下更重视什么,可以容忍什么,做出适当的选择即可,后边可以再调节。
6.任何事都是一个IPO。
I是Input,P是Process,O是Output,凡事都可以归为输入-处理-输出的路径,想好依赖方,处理方式以及交付物,事情就可以变得简单。
7.公司是你的放大器也是你的限制器。
公司是一种组织,组织能辅助个人做成一些事,比如个人在组织中做项目得到成长,能得到优秀同事的帮助,能享受公司发展的红利,能获得公司的学习资源和其他福利。
但个人做事往往会受组织的限制,比如制度约束,工作时长,发展方向等等。
需要好好利用放大器,同时也要评估限制器是否超出了自己的容忍度。
程序员面试心得 篇2
不知不觉做软件已经做了十年,有成功的喜悦,也有失败的痛苦,但总不敢称自己是高手,因为和我心目中真正的高手们比起来,还差的太远。世界上并没有成为高手的捷径,但一些基本原则是可以遵循的。
1. 扎实的基础。数据结构、离散数学、编译原理,这些是所有计算机科学的基础,如果不掌握他们,很难写出高水平的程序。据我的观察,学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。
2. 丰富的想象力。不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案,试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上,除计算机以外,多涉猎其他的学科,比如天文、物理、数学等等。另外,多看科幻电影也是一个很好的途径。
3. 最简单的是最好的。这也许是所有科学都遵循的一条准则,如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式:E=mc2。简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题时要优先考虑最简单的方案,只有简单方案不能满足要求时再考虑复杂的方案。
4. 不钻牛角尖。当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。当我遇到难题的时候会去玩游戏,而且是那种极暴力的打斗类游戏,当负责游戏的那部分大脑细胞极度亢奋的时候,负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候,我会发现那些难题现在竟然可以迎刃而解。
5. 对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有得到答案,在过程中你也会学到很多东西。
6. 多与别人交流。三人行必有我师,也许在一次和别人不经意的谈话中,就可以迸出灵感的火花。多上上网,看看别人对同一问题的看法,会给你很大的启发。
7. 良好的编程风格。注意养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。大家都知道如何排除代码中错误,却往往忽视了对注释的排错。注释是程序的一个重要组成部分,它可以使你的代码更容易理解,而如果代码已经清楚地表达了你的思想,就不必再加注释了,如果注释和代码不一致,那就更加糟糕。
8. 韧性和毅力。这也许是"高手"和一般程序员最大的区别。A good programming is 99% sweat and 1% coffee。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。你不妨做个测试,找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。
这些是我这几年程序员生涯的一点体会,希望能够给大家有所帮助
程序员面试心得 篇3
随着信息时代的迅猛发展,软件工程师这一职业变得十分抢手,其中java软件工程师更是倍受青睐。有数据统计显示,20xx年,我国对软件开发人才 的年需求量达到20万,并且仍旧在以20%的速度增长,其中java软件工程师需求占比60%以上。由此可见,在巨大市场需求推动下,java软件工程师 的薪资待遇将再创新高。
“对于职场人士而言,人人都期待高薪,可是并不是每个人都能顺利拿到高薪。不少已经工作的人打电话过来咨询,问道不是计算机专业可以参加java培 训吗?毫无基础可以学习java吗?我都会说,只要努力,没有办不到的事儿。”国内知名IT培训机构尚学堂的负责人说到。的确,java技术看似高深,其 实也并没有多么高深,只要学员们跟着老师的课程按部就班的学习,一定能够顺利毕业,也能够通过每周5-10家企业上门招聘找到合适的工作。
大学学习土木工程的刘同学在毕业后找工作遇到了重重坎坷,看到IT行业风生水起,有了参加java培训的想法,最后来到了尚学堂。刘同学说,因为自 己从来没有接触过java编程相关的知识,在报班之间还曾犹豫过,怕自己跟不上老师、同学的节奏。但开课之后,看到老师手把手敲代码授课,看到每一个同学 都很认真的学习,知道自己没有选错。“四个月的时间,我完成了从门外汉到java开发程序员的完美蜕变,我每天都很充实,不光是知识的进步,同时在学习中 我也获得很多快乐,跟同学们一同解决困难的问题,一同探讨学习方法,老师也很认真、责任,知识点讲的既明白又深刻,老师还把实际开发中积累的经验毫无保留 地教授给了我们,这些宝贵的财富会让我这样零基础的程序员少走很多弯路。”
20xx结合十年教学经验及业界流行趋势,全新推出“JAVAEE+大数据+移动4G前端”课程,被清华大学和中科院计算所的有关专家认可为最具技术含量的java课程体系。想要获得高薪的人士,不妨着手开始学习。
程序员面试心得 篇4
是非常重视效率的公司,工程师文化盛行,给我面试电话的是一个工程师,他说我是腾讯的软件工程师,近日收到你的简历,想找你聊聊。
我还第一次接到非 HR 式的面试通知。过去后也是工程师接待我的,当时一直在想 HR 有什么可干的呢?
技术面试分为四轮,第一轮是两个年轻的程序员,问一些项目背景啊,技术方向啊,也结合我的项目经验聊了实现原理之类,聊得还比较开心和轻松。
第二轮是 Team Leader,重复了一遍项目经验,他的侧重点在项目进度控制和风险控制方面,他也问了我的薪资要求及技术意向,也说明了他们目前需要一个什么类型的人才。
第三轮是专家评审,他们的侧重点在于计算机基础知识,项目实现原理,数据结构和算法,他们采取让你先陈述,然后由浅入深提问,层层递进铺开的面试思路,非常专业,这相比很多公司面试喜欢冷门的技术细节,不知道高到那里去了,这轮面试有很多开放性的问题,我回答时他们也会帮我纠正错误,整理思路。
第四轮是技术总监面,这哥们穿着真太随意了,他好像比较忙,一直不断在电脑上敲,只问了我两个问题,说说你从业生涯中遇到的最大技术难题和解决过程,说说你熟悉的两个开源项目以及项目背景和原理。
我在小白板上写和说,过程中他很少说话,过程中他一直:然后呢?还有呢?最后看了一会小白板就走了,我一直纳闷他到底听了没有。
最后就是 HR,她说该了解的都了解了,你有什么问题问我没有,我简单问了几个公司结构的问题,然后她就和我谈薪资了,肯定是我开的薪资太低了啊,吐血啊啊啊,她淡淡说了一句,这个薪资没问题,我们一周左右给你发 offer 就结束了。
程序员面试心得 篇5
近年快速发展,也是我一直想加入的公司之一,只是我一直不知道广州有研发分公司,直到后面听一个朋友说的,于是就过来聊聊了。
首先是前台 MM 给我一张我很介意的背景调查让我填写,尽管不想填,还是耐性填了,有一份比较简单的笔试题需要做,题目主要还是一些线程,消息之类的 Android 基础题,感觉并没有根据级别来出题。
技术面试有三轮,首先是一个酷酷的灰衫人,问题集中在计算机基础上,项目背景我介绍完了他也比较简单问了一些问题,相对而言会少涉及 Android 开发,深度也有所欠缺,他理解能力非常好,有些专业性问题看得出来他没有接触过,但是很快就可以理顺,途中他有问我这个面试题怎样,我坦诚回答对我而言知识点深度广度有所欠缺,如果有针对性会更好。
二轮是一个看起来很 Nice 的年轻哥们,面试过程一直保持微笑,口头禅是为啥?面试内容上项目经验涉及会比较多,也有一些设计模式和数据存储相关,项目周期和风险控制也有所 Check,总体下来理论为主,技术点比较少比较浅,面试聊得挺愉快滴。
三轮是总监面,大部分问题围绕在你有什么优点,相对其他程序员有什么优势,有没有某个项目因为你加入而变得不同,前两轮也有一些这类问题,但不像这轮变成一个针对点,确实有一些项目组因为我的加入变得不同,但并没有发生过质的裂变,虽然这种问题有压价铺垫的嫌疑,我一直觉得开源技术的发展已经让整个互联网行业变化,相对上个时代,团队才是决定因素,但整个面试都有这类问题,也能侧面反映出公司有个人主义趋向。
最后是 HR 谈薪,HR 帅哥很赞很爽快,没有很多公司的职业套路和夸夸其谈,我的面试评价挺好,薪资要求超过了总监决定范围,他说去申请,很快就收到了 offer。
在呆的时间短暂,和同事的相处挺好的,经常在一个小台球桌上玩儿(一面的灰衫人花样虐菜我),业余活动也很丰富,有健身房和滴滴,加班很多(22 点离开算早),行政 MM 各个节日活动都很用心,年会也非常高大上玩得很嗨森。
在这里从事了很多业务方向的编码,猎豹有一些原有的通用模块,但大部分已经无法适应要求,每个项目都需要造一次轮子,努力想推进一些通用模块的编码,很难有机会和支持,虽然一直觉得不适应,觉得这并非一个有技术氛围的公司,开发地位相当低,但还是想努力改变自己来适应环境。
真正促使我离职是转正评审,其实我觉得自己在猎豹的输出还是不少的,有诸多槽点,也相信自己是至少及格的,转正评审投影一直不太好用,时有时无的,我分别从项目输出、技术输出几个方面说了,期间参与评审的两个上司一直在玩手机,讲完后却说我未说过对项目的贡献,几乎全盘否定了我在通用技术的输出,内部通用组件和开源方案也觉得没有任何意义,有一种野路子出身的土军阀感,当时本想辩解九层之台起于累土。
但因为另一位同事插话说我某个项目 PPT 写成全是自己做的(其实只有少部分),业务方面的业余程度让我震惊,心累没话说了(不与傻子论短长),后来只能离职。
离职原因一方面是我本身对猎豹广研疯狂加班的文化不适应,另一方面是想换个更适合技术人员发展的环境,离职感受一般,我前后对所有工作上有过支持和合作的同事都表示了感谢,期间签字领导保持漠不关己的麻木感,缺少人与人之间的基本尊重,觉得欣慰的是最后收到入职帅哥 HR 一个离职祝语的小卡片,上面的打油诗让我觉得离职猎豹还是有所遗憾。
程序员面试心得 篇6
是非常重视效率的公司,工程师文化盛行,给我面试电话的是一个工程师,他说我是腾讯的软件工程师,近日收到你的简历,想找你聊聊。
我还第一次接到非 HR 式的面试通知。过去后也是工程师接待我的,当时一直在想 HR 有什么可干的呢?
技术面试分为四轮,第一轮是两个年轻的程序员,问一些项目背景啊,技术方向啊,也结合我的项目经验聊了实现原理之类,聊得还比较开心和轻松。
第二轮是 Team Leader,重复了一遍项目经验,他的侧重点在项目进度控制和风险控制方面,他也问了我的薪资要求及技术意向,也说明了他们目前需要一个什么类型的人才。
第三轮是专家评审,他们的侧重点在于计算机基础知识,项目实现原理,数据结构和算法,他们采取让你先陈述,然后由浅入深提问,层层递进铺开的面试思路,非常专业,这相比很多公司面试喜欢冷门的技术细节,不知道高到那里去了,这轮面试有很多开放性的问题,我回答时他们也会帮我纠正错误,整理思路。
第四轮是技术总监面,这哥们穿着真太随意了,他好像比较忙,一直不断在电脑上敲,只问了我两个问题,说说你从业生涯中遇到的最大技术难题和解决过程,说说你熟悉的两个开源项目以及项目背景和原理。
我在小白板上写和说,过程中他很少说话,过程中他一直:然后呢?还有呢?最后看了一会小白板就走了,我一直纳闷他到底听了没有。
最后就是 HR,她说该了解的都了解了,你有什么问题问我没有,我简单问了几个公司结构的问题,然后她就和我谈薪资了,肯定是我开的薪资太低了啊,吐血啊啊啊,她淡淡说了一句,这个薪资没问题,我们一周左右给你发 offer 就结束了。
开始有 HR 简单聊了一下,然后笔试,有 10 个不定项选择题,2 个编程题,1 个开放性的三列交叉排序算法题,整个笔试不难,感觉要得高分非常不容易,基础的广度和深度均需要顾及,接着就是两轮技术面试,笔试答错的题目都被抓出来问了,他会给予思路和背景知识,直到你弄懂了为止,有种上课的感觉,其他问的都是简历上的内容,譬如我大学的 SCI 论文是点阵识别方向,两个面试官都非常感兴趣,交流过程中他们都非常谦卑,不断问我是不是这样理解,没有很多公司面试官高高在上的 SB 感。
最后是 HR 谈薪,他很坦诚说了其他面试官对我的评价和三星给我的薪资,也谈到了我将来入职的部门和工作,以及对我的期望和建议,他并没有说三星多好多好,反而让我比较目前已有的 offer,选择适合自己的。
上一篇:敬老院志愿者活动个人心得_志愿者活动个人心得【最新32篇】
下一篇:返回列表