2018届本科PHP岗校招经历(史上最详细)

Author Avatar
WoodyXiong 10月 13, 2017
  • 在其它设备中阅读本文章

前言

有很多同学希望我分享这次校招的经历,而且我在这次校招中感觉收获颇丰,希望分享给大家,希望这篇文章能对大家有所帮助。
我大概是八月初开始准备校招的,在十月国庆之后签了offer,历时两个月时间。

前期准备

由于之前是在知乎上偶然得知找工作要在大三暑假就要开始了,当时已经是比较晚了,暑假都过了一半了,所以匆匆开始准备。
首先明确目标是我是专门针对PHP(服务器端的语言)的岗位。

自己设计一个框架 项目地址

为了自己的能力能够达成进公司的水平,我特意研究了自己经常用的ThinkPHP框架,看看这个框架到底是如何构成MVC架构的,然后框架内部的类是如何进行互相调用的。为了能让别人知道我的成果,所以我仿造这个框架自己写了一个TinyPHP框架,其实写框架并不是特别难,主要是得看懂别人的代码是如何运行的,我用PHP的一些调试的函数一步一步输出内容结果,看不懂的地方还专门去百度那些函数是干什么用的,这样一个很简单的MVC的框架就初步实现了。为了让自己充分吃透这个框架,我还特意增加了一些功能,比如token的验证功能等等。大约在8月15日,框架基本完成。

准备简历 简历地址

由于之前做的东西还比较多,包括院网设计慧眼项目机械手示教器机器人视觉等项目,所以简历还算比较丰富,放在coding.net上面看起来不长,打印要4页纸。

简历挺重要的

  • 首先你在校招的话,HR会挑选简历合格的才能参加线上的考试,如果简历不是很理想,可能连笔试的机会都没有。
  • 如果你顺利进入了面试环节,面试官会主要问你简历上面的项目经历,如果你很会说的话,介绍这些项目就是个非常好的话题,让面试官更加了解你,会让面试进行的更加顺畅。而不是面试官直接问你很多的问题,因为公司的业务场景你可能没有这方面的经验,往往这些问题真的不太容易直接回答对,或者进入手撕代码的环节,那样会比较痛苦。

没有实际的项目经验,如何写简历

大部分人的大学生活可能不会像我这样有机会做那么多的项目,但是我觉得这个其实水分可以很大,你完全可以到网上找一个项目写到简历上,或者问身边的同学有什么实际的项目可以写上去,但是问题是那个项目你必须清楚里面的实现原理,可能不需要实际的代码,但是别人问你的话你要答得出来。

笔试阶段

大约在8月17日左右,感觉准备的差不多了,就开始疯狂的投简历,当时正值秋招最火热的时候,今日头条、链家、腾讯的笔试如约而至。
当时今日头条的笔试特别搞笑,我为了笔试特地早早的买了一碗炒粉当晚餐,电脑放在家里WIFI信号最好的地方。。。可是没想到当时的考试用的浏览器必须要谷歌Chrome浏览器,装了一晚上硬是没有没有装好,所以错过了这场考试。

算法和数据结构很重要

考试的时候发现最后的编程题的水平很有限,基本做不出来,而且算法基础太过薄弱,所以当时没有办法只好狂补算法,一开始直接在网上找资料感觉进度太慢了,常用的排序算法和一些数据结构在网上花很长时间才能看懂,而且完全没有方向。
为了减少时间特地买了慕课网的玩转算法面试,里面的老师讲的十分详细,面试笔试会考的考点都会帮你总结,另外自己还得边看边刷老师推荐的题目,在之后的笔试当中游刃有余,碰到这方面的问题基本上都有思路。这种边刷题边笔试的状态一直持续到9月20日。
在此期间笔试了差不多7-8场吧,其中收到了杭州贝贝网的实习邀请和京东的面试邀请。
由于我在大四上学期还有课,所以贝贝网的实习就给拒了,只去了京东的面试。

第一次面试

准备这次面试,我看了很多PHP岗位的面经,由于PHP岗位的东西要问的不是特别深入,所以在面试前一个星期,我把知识点都准备得差不多了。
京东不能远程面试,所以选择了请假去上海面试,来回车费就近1000块。
上海的面试是9月23日,在一个四星级的酒店,里面等待面试的人挺多的,还看见了霸面的简历,稍微翻了一下,学校基本上都是985的,感觉压力好大。
在酒店签到之后就直接面试了,是在酒店的一个大厅里面,有很多桌子,都是一对一的面试,让我很惊讶的是我的面试官是一个女的,感觉很像李宇春,虽然看起来很干练,但感觉完全不像是写代码的工程师。
面试的问题感觉很泛,一开始就稍微介绍了项目经历,由这些项目经历她来提问,稍微写几个还有点印象的问题。

PHP如何防止SQL注入

当时听到这个问题特别兴奋,因为感觉特别简单,回到的时候感觉都是想到什么说什么,我当时好像只说到了过滤,感觉答得太简单了,其实还有参数化查询,事物提交,数据备份等等

为什么要MVC结构

这个问题网上查询很多类似的问题,就不再解答了。

第一面试经验总结:当面试官真正问你问题的时候,不要直接回答,而应该仔细想一下,在心中打一遍草稿。
如果面试官的问题不是很明确,也可以问面试官很多遍,将问题的题目问清楚再回答。

京东面试结果:在官网查询发现状态还是在初试中卡在不动,估计是当备胎中的备胎了,而且跟别人对比了,不是面试未通过的状态,还在上海待了几天,感觉心都凉了。

第二次面试

这次是在10月10日晚上厦大的海韵校区做了白山云笔试,当天凌晨就发了第二天10点面试的通知。
面试的地点是在厦门软件园二期,提前了半个小时到现场,公司的环境特别好十分喜欢,饮料随便喝,一进门就看见跑步机、桌球等各种各样的设施,而且还有自助的餐厅,中午的饭也是在那里吃的。

因为有了第一次京东的面试经历,所以这次面试蜜汁自信,期间问了挺多的问题的,还比较详细,基本上所有的问题我都答上来了,下面列举一些印象比较深的问题。

http为什么要用cookie

因为http是短连接,无法确定是谁连接的,所以要cookie来验证用户身份,cookie是存储在客户端,session是存储在服务器端

cookie和session的关系

在PHP中,session是通过cookie的phpsessionid来获取用户身份

http的304是代表什么

这个在面试的时候记得不是特别清楚了,毕竟是cdn厂商,估计跟静态资源有关系,所以猜了一下,后面一查竟然猜对了。304是浏览器的资源缓存标识,即用户在第一次访问静态资源的时候服务器返回一个expire-time并且状态码是200,浏览器会将这个资源缓存起来,在之后的时间内,如果用户在expire-time访问的话,浏览器就直接取缓存内容即可,然后http的标识符就是304

设计一个多点登录系统(大题)

面试官刚开始问问题的时候问题不是那么明确,可能让人摸不着头脑,我不断深入的询问才知道面试官需要问什么东西,这可能也是面试另外一部分的技能,沟通能力。

题目介绍:多点登录类似于用户登录百度贴吧百度云盘百度知道三个服务,只需要在passport.baidu.com网页登录即可,介绍实现原理。

  1. 由于之前制作自己的框架的时候对cookie了解比较深入,还了解过跨域访问,所以所以答利用cookie的跨域访问,但是在面试官的一步一步往深处问我就不太清楚了。
  2. 在登录的服务器加一个内存数据库redis,里面存储用户的状态,在其他服务器服务的时候,利用PHP发请求给登录服务器的内存数据库redis,询问用户是否合法以防止用户伪造用户登录的userid。考官说登录服务器是一个瓶颈,因为所有服务器都要询问登录服务器用户的状态,不通过。
  3. 因为觉得这个问题可能就决定我的去留了吧,所以继续硬着头皮拿着纸想了五六分钟吧,想想才发现最主要的问题是为了防止用户伪造不合法的id,其实这个问题在我之前写框架的时候也遇到过,方法就是在登录浏览器可以明文发送userid,然后再给一个签名,在PHP中的代码是这样。
    $sign=md5($userid+"salt");
    
    我觉得这个方法好像没什么问题,而且是完全自己想到的,面试官笑笑说,这个勉强可以,之后我查了网上的资料,好像大家都是差不多这样实现的。

总结

由于本人是双非(非985、211)的二本院校,因为很多工作岗位首先就是注重文凭,例如ofo、小米这样的公司直接写了必须985学生,而且在我们学校完全没有企业来校招宣讲,每次都必须跑到厦门大学蹭宣讲会笔试,所以找到自己理想的工作实属不易。
但是有一些企业可能还是看能力吧,所以我觉得大学好不好可能跟学生的学习能力或者是应试的能力有一定的关系,但是在有些时候,公司可能更加注重的是你进来之后能不能做事,有没有项目经验,是不是能跟上公司的进度,而不希望你是死读书的,所以不管是什么大学,在课外还是要多多钻研自己感兴趣的事物。

最后想说的

感谢大家能看到最后,最近申请了一个个人博客,以后会发一些文章在博客上面,希望大家有时间可以看看魁爷(grand father kui)