近两天,感觉现在的工作干得不是很爽,于是就请假出去面试了几家企业,有一家是我本人觉得最有把握也是最喜欢的公司,但是结果却让我吃惊。当然也是正是由于这次经历,才有了我在这里的吐槽。发这个帖子主要就是想用自己的亲身经历来个自己来个重新的审视,也给朋友们一个拍砖吐槽的机会,博得大家一乐。
本人2011年毕业,至今混了三年,虽然在开始的阶段有过一段打酱油的机会,但是出于“资历”的考虑,我还是在自己的简历上写上从毕业就开始了工作。三年,对于以个码农来说却是是一个分水岭,因为三年以下的同行,估计面试都会让你去做笔试题,然后面试官拿着你的笔试成绩在你面前不停的翻动,然后让你开始自我介绍,.....,其间,你也许就会看到自己做的题的成绩,也许很好,也许很惨,如果很惨,在最后的阶段问你你的薪资待遇的时候,也许你就不会那么有底气了,我想大概面试官也有这个意思,所以会在你面试过程中“故意”让你看到自己的答卷吧,呵呵。
既然混了三年,有了不用做面试题的待遇,那就开始正是的面试吧。第一轮的面试,不知道是自己的信心十足还是运气太好,面试官问的关于java的一些问题都是平时在工作中会常常处理的或者是平时有过积累的东西,比如java中对象在内存中如何存放的?final修饰的对象不能被重新复制在它修饰的是一个类的时候如何解释?java中equels和hashcode方法重写的意义是什么......大家看到这,是不是感觉这个面试也没有什么太大的稀奇呢?确实,对于编程老手或者是“面霸”而言,这些都是小菜,所以第一关下来,大家都笑呵呵的过去了,甚至还提到了直接找人事详谈除了工资之外的细节问题(期望薪资已经得到了他的同意)。我感觉自己貌似应该考虑从正在做的企业离职的事宜,于是这一天过得很开心。
第二天从人事面试结束之后又被要求再去面试一次,于是我去了,我觉得这次应该是找我谈谈目前项目的事情,结果是让我分析一个简单的网页设计的功能,我在下面会描述一下这个简单的东西,对于我的表现,希望大家不要笑掉大牙。
题目:
用html将这个登陆界面的代码写出来,我的答题是这样的:
<html>
<head>
</head>
<body>
<form method="">
<input type="text" name="用户名:">
<input type="password" name="密码">
<input type="submit" name="登陆:">
<input type="reset" name="重置:">
</form>
</body>
</html>
说实话,我确实是很久没写html代码了,三年多时间里除了刚开始的时候写过,之后就很少接触这个东西,当时也不知道是原因造成自己就这样答题了,下面是我和面试官的对话,M代表面试官,I代表我。
M:method这个东西是拿来干嘛的?
I:好像是跳转的url的
M:那action是干什么的?
I:哦,不好意思,我很久没写html代码了,这个我搞混了,method是请求方式,action才是跳转的url的
M:指定name是让界面显示”用户名:“这样的东西的吗?
I:input的value表示标签的值,那么name应该是表示现实的标签吧。
M:那你觉得name和id有什么区别呢?
I:dom可以通过id也可以通过name获取觉得dom节点元素,但是name可以相同,id通常唯一标示一个控件,所以取dom节点通 常使用id而不是name,当然name也可以。
M:好吧。那我们在来看看你对这个登录的校验如何实现吧,现在我把参数都给你,数据库表建好了,数据库连接给你了,需要你对这个登录做一个后台的验证,你如何实现,一边写SQL一边给我讲解下吧。表名称叫user,只有两个字段:name,password.
I:第一步先校验输入的用户名在数据库中是否存在:select count(1) from user where name='????';
如果第一步过了那么进行password的校验:select password from user where name ='???';
M:登录这东西你做过吗?
I:项目中登录这个东西我还真没做过,只是在学校的时候常常用它来做实验。
M:但是这个项目中存在的话,总的有人来做吧。我想问你,为什么你做一个校验要查两次数据库呢?用一次不就行了?
I:我只是希望通过两次校验得到登录失败的信息提示更明确....(打断了我)
M:用一次不也可以实现吗?
I:(这时候想起了自己写的html代码的严重问题,完全慌了,似乎都没有听到他说什么)啊?
M:就用你第二个sql:select password from user where name ='???';如果没有用户名,那么查出来的数据是空的,对吗?
I:是的(这时候想到自己连html界面都不会画,昨天的大好前程应该是没有了,继续慌张)
M:如果用户名存在,查出来的password和输入的匹配不就可以判断得到的密码对不对嘛?
I:.....(这是想到自己不仅没有写出界面还后台简单的校验也出问题了,更加慌张)
M:我们公司对人员的需求很大,但是我希望找到的是扎实基础的员工,经验谁都可以混,但是基础不是混出来的,我想我们只能以后再合作了.....
I:(完全沉浸在被打击的思考中),哦....好吧.....多谢.....
面试结束,一个简单的登录打败了这个”有三年经验的码农“。
其实好不夸张的说,在项目中,我也算是能挡一面的码农了,但是在这个最简单不过的登录页面和校验上败下阵来,估计大家都认为我的水分很多吧,我承认我有水分,但是我的水分不至于这么多吧?离开面试场地,我深深的思考了下,我觉得这轮面试败在两个方面:一.认为面试十拿九稳,基本没问题,太过于轻敌。二.工作中对重点的关注严重偏移:一般的面试官问道的一些问题都是通过你的经验来的,三年,他会问他认为你三年应该会的东西,基本都会忽略类似这种登录校验问题,因为这个太基础了,根本就不会拿出来作为面试题。但是今天我居然遇到一个如此不同寻常的面试官,我不得不佩服,我被如此基础的东西打败,我也无话可说,一个人经历的任何事情和自己都是有关联的,所以,面试失败只能有一个原因:太菜!
我觉得我这辈子也不会忘记这次面试经历,这也给了我一个启示,有良好的基础才能爬的更高,基础不牢靠,”高“得并不稳固!
最后我用他和我qq交流的一段话来结束这个帖子吧:
能从失败中总结经验,已经有了很大收获,现在开源的框架很多,我们是站在巨人的肩膀上,但是不要忽略了巨人怎么成长的,基础很重要!