学员姓名:王煜堃
就业单位:青岛金石文理培训学校
工作职位:JavaEE软件工程师

金石文理培训学校系教育局批准的正规培训机构,致力于为岛城中小学生提供专业培训,由北京海淀多年从事教育培训的专业团队及岛城教育专家联袂打造,通过入学测试,分析学生非智力因素,挖掘每个学生的潜力,量身定制课程,通过个性化的培养机制,实现人人可教,人人可成材!作为岛城一对一教育领导领导品牌,我们正在用昨日的成绩和今天的努力受到越来越多家长的信赖和关注。

关于面试,网上已有很多的技术贴,很多的教程了,但还是想针对软件行业的面试,自己总结点新的经验,供青软学子参考。

没有工作经验?理论/技术知识不完善或者不熟悉?没有问题。就我个人而言,经历过多次公司面试,对面试中的一些问题也有一套自己的解决方案,特此分享。
对于没有工作经验者来说,有两种情况:

1、你技术的确是有,自己做过成型的东西,至少能够独立解决问题。

2、编码能力一般,参与部分项目开发。

对于第一种,从网上找一些成型的项目需求分析文档,了解最基本的需求。这个就要根据你面试的公司了。如果公司做网站,那就要多看一些商城/论坛的项目分析,然后了解一下网站高并发的解决方案,如果公司是做企业内部系统、ERP、OA,那你就要多看一些管理系统的需求分析,甚至是财务知识都要知道一些,然后多了解一下SQL语句优化,数据库高并发解决方案等等,这样在面试过程中,自己在应届学生中还比较具有优势,薪资等福利待遇也会不错,到岗位上发展一阵不会吃亏。

对于第二种,没有好的办法,一是多看理论知识,用强大的理论体系压倒面试官,无论是问你存储过程还是数据结构,需要对答如流;二是熟悉做项目流程,便于去公司较快上手工作。

对于少有面试经验的人来说

面试的过程比较微妙,因为在两个人交流的过程中,不光是公司和应聘者的相互了解,也是面试官个人与你本人的相互了解,一定要在对话中尽量保证面试官对你本人的好感,并且尽量让谈话的内容跟着你的节奏走,当然沟通谈话能力不是我说说就能改变的。从头举个例子~一般面试官都会让你介绍一下自己,这就是你尽情发挥展示你自己最好的一面的时候,有学历可以说学历,有工作经验就可以说工作经验,但是自我介绍的结尾就要给自己留好余地,比如你对自己项目比较自信,可以在最后说,“我在之前公司一直做项目分析和设计”,这样面试官基本就会顺着你的话,问你关于项目的一些问题,比如项目都有哪些模块,有哪些功能,这时要注意,如果你对项目逻辑了解的比较深,就一定要挑着逻辑复杂的模块介绍,如果你的代码技术比较过硬,就挑着功能实现比较困难的模块介绍,这样面试官紧接着的问题就会是“某个功能你是怎样实现的”,这样你就主导了你们谈话的内容,并且给面试官的感觉是你回答的都很正确,但是切忌过分明显的引导话题走向,比如在回答问题结束时,突然来一句“我对啥啥技术了解比较多”,这样的话容易让人厌烦,适得其反,当然,在面试中如果出现冷场,比如面试官暂时没有什么问题问你,他也处于思考中,你就可以这样说,“我还会神码神码的技术~”或是“我对神码神码的有研究”,不仅引导话题,也能让面试官认识到你会的东西比较多一些。

关于人事问题

人事问题最忌讳假大空,比如“我们公司java和.net都有,你为什么选择java?”如果你说java发展前景比.net好,那么很有可能碰钉子,因为这种事每个人的看法不同,有的公司做java但是他就觉得.net好,你也没办法,但是如果你这么说了,扣分是一定的,比如“我一直就擅长java开发,因为之前公司主要是做.net,没办法”。这只是个例子,还有比如“什么是好软件?”,如果你的答案中存在“运行效率”、“代码整洁”、“逻辑清晰”、“美观”等等这些词,那就直接宣布你零分了,什么是好软件?一句话“用户说好那就是好”!千万别把你那一肚子技术词汇搬出来,糊弄外行还行,内行人可是看门道。而且大部分软件公司喜欢的都是能闷头苦干就知道加班的人,有思想是好事,但千万别过,说自己兴趣爱好的时候尽量往计算机方向扯,要么就是团队运动,比如足球篮球什么的,起码能表现出你有团队意识。

关于技术问题

切记点到为止,除非面试官让你详细说明,不然的话就把大体意思说清楚就行,面试也是在谈话,平常说话还经常会说错呢,难保话多口误,万一把一些基本的东西随口说错了,那印象分肯定大打折扣。

面试中技术问题最困难的就是你不会的东西,怎么答?我一般很少遇到这种问题,为什么呢?因为我对自己做的项目比较自信,从一开始就把话题引导到项目分析上去,这样我就可以滔滔不绝的介绍我做过哪些项目,哪些复杂逻辑,相比起来技术问题问的比例就少一些。这是一种规避策略,一是给人一种项目经验丰富的印象,二也确保了自己面对的纯技术性问题会比较少。
但是如果真遇到了,那必须保持淡定。

解决方案:交代自己没用过,但是在项目开发中用了什么样的解决方案来解决这种技术问题,或者说自己用了别的什么技术来作为替代。这样起码展现出自己在项目开发过程中不会有什么问题。

解决方案:明确表示自己曾经用过,但是因为太久没用过了,淡忘了,如果开发中遇到这种问题,稍微看一下资料就能解决。这个不是特别推荐,如果是常用技术,建议别这么答。

我个人认为程序员面试要了解的东西,这都是一些比较大的问题,只需要大体了解,问到的话能说明白就行。

1.数据库高并发解决方案

2.服务器超大访问量解决方案

3.管理系统权限分配

4.SQL语句优化

5.什么是工作流?如何实现?

6.SEO优化的一些细节

如果你能在简历上写上你了解这些问题,并且在面试中对答如流,绝对是加分的。而且如果你了解这些问题,很大程度上面试官就不会问你一些特别底层的技术问题了,对你面试成功又是一大帮助。

结语

工作就像谈恋爱,面试就是相亲,双方只要看对眼了,就不会在乎之前相过多少次亲了。其实我说的天花乱坠也没用,如果你真的技术够硬,那面试只是过程而已,所以,技术才是硬道理!