2018春招实习笔试面试总结(PHP)
博主双非渣本计算机软件大三狗一枚,眼看着春招就要结束了,现将自己所经历的的整个春招做一个个人总结。
首先就是关于投递计划,博主自己整理了一份各大公司的春招信息,包括网申地址,开始时间,结束时间,以及自己的求职状况,附图如下:
由图可以看出,博主的求职历程有多么的艰辛(其他还有一些直接简历就被筛掉的我就不附图了。。。),在春招刚开始,博主根据自己安排的计划表一家一家公司的投递简历(简历在寒假时已经做好),根据不同的公司对于简历也要进行不同的修改,争取做到一家公司一份简历,给每家公司投递的简历都不同。可能是由于博主在简历中写的项目经历的内容还可以,所以简历只是被一部分公司给筛掉了,还有一部分公司还是让博主进入到了笔试环节。
笔试环节,在这个环节上,博主也是十分感慨的,因为虽然简历通过的公司不少,但是在笔试上感觉自己掉进了一个大坑。。一共投了二十几家公司,简历通过的有大概十几家,然后,笔试基本上就全军覆没了o(╥﹏╥)o。到最后博主接到面试通知的只有三家,百度,360,京东。关于笔试的具体内容,博主简单说一下,各个公司的笔试题题型大多数都差不多,一般都是10-20道选择题,2-3道编程题,当然如果是顶尖公司的话,他们的笔试会有很多内容,包括数学能力测试,逻辑能力测试,性格测评等等,也有比较令人“难忘”的公司的笔试题,比如字节跳动(今日头条),头条的笔试题十分豪爽,上来就甩到我脸上五道编程题,一道20分,刚拿到题的时候,我的内心是崩溃的。博主算法能力不是很强,五道编程题,最后只做出来一道,令我尴尬的是其余四道中还有两道题看不懂题o(╥﹏╥)o。。。故,卒。不提伤心事,在做好总结的同时,我详细说下我接下来的面试过程。
激动人心的面试环节。接到这三家的面试邀请的时间顺序,先是京东,4月9日的笔试通过后,接到4月13日在上海的现场面试,接到通知时已经是12日,博主身处异地,无法赶到现场对此很遗憾,但又不想错过这次机会,就尝试性的给京东的面试通知邮件发了一封回复,告知本人十分想参加面试但无法按时到达,可不可以转为视频或电面,然后那边在傍晚的时候给我发来邮件,说我的请求已经转发至面试官,具体是否可以视频或电面请等待面试官通知。在13日上午,我收到了面试官的电话,告知下午两点半进行电面。这是我第一次电面,十分激动,一边等待一边进行着复习,面试具体细节情节就不再赘述,这里只把面试问题列出,供大家参考。
京东-PHP开发工程师-实习-一面
自我介绍
介绍项目,访问量,数据库表有多大
数组和链表的区别:
数组静态分配内存,链表动态分配内存;数组在内存中连续,链表不连续;数组元素在栈区,链表元素在堆区;数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n);数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。
实现单链表的查询,找出重复元素
这道题博主当时因紧张过度,答得很烂,只回答出了暴力遍历的方法,优化没想到。
暴力方法,链表依次遍历,每当读取一个值,让他与前面的值进行比较,看是否重复,时间复杂度为n的平方。改进:使用hash表实现,时间复杂度为n,
简述hash表
是根据键值对直接进行访问的数据结构,可以提供快速的插入操作和查找操作
http请求码
401:请求需要认证 403:访问请求被拒绝 404:找不到页面 301:请求重定向,永久性
tcp/udp区别
博主答的:TCP面向连接,UDP无连接;TCP可靠,UDP不可靠;TCP传递字节流,UDP传递报文段;TCP适用于安全性较高如邮件传输,文件传输,UDP适用于速度较快如语音视频等。
简述tcp三次握手
这个博主感觉自己回答的也很烂,印象中自己说的是第一次握手客户端向服务端发送一个请求,第二次握手服务端向客户端发送一个请求,第三次握手客户端向服务端发送一个请求。。。。
博主后来查资料找到的自认为完美的答案:
客户端–发送带有SYN标志的数据包–一次握手–服务端(此时服务端确认了客户端可以发送东西,确认了自己可以接收东西)
服务端–发送带有SYN/ACK标志的数据包–二次握手–客户端(此时客户端确认了自己可以发送以及接收,服务端可以发送以及接收东西)
客户端–发送带有带有ACK标志的数据包–三次握手–服务端(此时服务端也确认了客户端可以发送以及接收,自己可以发送以及接收,连接建立)
也就是说,TCP三次握手的实质就是客户端以及服务端分别确认双方发送以及接收正常,然后连接建立。(有没有感觉瞬间思路清晰了呢?)
数据库索引是什么?索引和主键的区别
博主答的依旧很烂。。
正解:一个索引是存储的表中一个特定列的值数据结构。
索引和主键的区别:1:主键是为了标识数据库记录唯一性,不允许记录重复,且键值不能为空,主键也是一个特殊索引.2:数据表中只允许有一个主键,但是可以有多个索引.3.使用主键会数据库会自动创建主索引,也可以在非主键上创建索引,方便查询效率.
使用sql语句实现对一张表的去重总数查询(表中有两个字段,id和name,name可重复)
博主的心都是碎的,“mysql了解吧?”,“了解”,“说一下去重查询吧”,“……”
正解:Select count(distinct name) from 表名
接下来的问题就比较常规了。
平常如何学习?
了解过最新的前沿技术?了解过深度学习?
知道设计模式吗?设计模式的优点
设计模式(Design pattern):是针对设计问题的通用解决方案。使用设计模式:可以把它应用到特定的应用中,用于解决相似的问题。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
就这样,博主人生中的第一次电面就结束了,结束前人家问我还有什么问题吗?我好死不死的问了一句,您觉得我表现怎么样,能通过这轮面试吗?答:还不算太差,至于结果等通知。当然,结果不用等博主也已经猜到了。至此,我的京东PHP实习生求职道路凉凉。
经过了这次面试(虽然只是一面),我深刻意识到了自己的不足,尤其是在基础知识方面的不足,有些东西自己知道,但是说不出来,还有些东西自己根本就不知道o(╥﹏╥)o……于是决定发愤图强,在接下来好好表现。360的笔试是在3月31日的,博主在4月12日收到了自己笔试通过的喜讯,并被告知将在4月25日进行远程视频面试(时间间隔确实有点长,不过也让自己有了充足的准备时间),在等待360面试的过程中,博主迎来了百度的面试邀请。百度的效率还是没的说的,博主4月18日笔试,4月20日被告知笔试通过,参加4月21日的远程视频面试(比360的都早。。),在经过了精心的准备后,博主上战场了。由于那几天时间仓促,没有来得及做记录,所以博主能想到什么问题就记录下来,想不到的也没办法了。
百度-测试开发工程师-实习-一面
自我介绍
项目介绍
挑一个项目里的功能简单说一下,如何实现,遇到什么困难
手撸快排
当时博主脑子抽了,硬生生没写出来,当时想扇自己脸。
进程与线程的区别
两张表,a表有name,addr字段,b表有name,grade字段,addr字段是地址,如北京市海淀区,焦作市山阳区,grade是分数,现在给定一个区域,如 山阳区,用sql语句查找出符合要求的学生及其分数,以及各分数段的学生人数,60-70,70-80…
这道题博主答的也不好,语句使用不够熟练
正解:select b.`name`,b.grade from b left join a on b.name=a.name where a.addr like ‘%山阳区%’; select count(*) from b where b.grade between 60 and 70;
OSI七层协议(答出来了五个。。)
Cookie和Session区别
Linux基本命令(如何查看进程,如何查看一个进程的cpu占用率)
基本命令回答的还算可以,查看一个进程的cpu占用率当时不会,后来查资料发现可以先ps找到进程号,再top -p id来查看
使用过哪些PHP扩展
MySQL,Mysqli,PDO,JSON,PHP_ZIP,MEMCACHE
PHP支持多继承吗?为何?
正解:不支持,一个子类只能继承一个父类,如果想要实现多继承,可以使用接口实现。
垃圾回收机制
zval容器的知识,不多说。
require和include区别,和_once的区别
正解:Require读取先读取,include放在哪在哪读;Require无返回值,include有返回值;错误处理方式不同,include出错会报一个警告,程序继续执行,Require出错会报一个致命错误,程序终止。
_once指只执行一次。
思维逻辑题
题目:两根长度粗细不均匀的香,烧完都是一个小时,如何判断15分钟这个节点?
博主刚听到这道题的时候是一脸懵逼的,第一次遇到还会有这种类型的问题,然后脑子没转过来弯,想不出,面试官小姐姐给我提示,从两段烧,我才领悟过来。
答案:一根香从两端烧,另一根一端烧(同时开始),当第一根烧完时,第二根剩下30分钟,此时记下这个时间节点,把第二根的另一端点燃,最后烧完的时间就是十五分钟。
博主记起来的大概就这么多,当时自我感觉答的也不是很好,不过比京东一面时候要强,等待了一会发现对面没有再次发起视频邀请,以为自己凉了,正打算收拾书包去上课(当时逃了课在寝室面试),二面邀请发过来了(幸亏没走早)。
百度-测试开发工程师-实习-二面
自我介绍
项目介绍
挑一个印象深刻的功能说一下
项目中遇到高并发问题如何解决
使用Mysql,如何优化?
答:之前针对这类问题,博主有好好整理自己的解决思路,所以感觉回答的还算可以。答:
选取最适用的字段属性:极可能缩小类型大小,比如邮编,定义为char(6)即可,不必太大,比如开关之类的字段定义tinyint长度设为1就行;
在可能的情况下把字段尽量不要设置为null,减少查询时需要比较null值;
使用join来代替子查询;
对用于join where判断和order by的字段建立索引,尽量不对那种大量重复的字段建立索引,比如性别。
当一张表中的数据足够多时,如何优化?
这条博主没有回答上来,直接说的不清楚,没有了解过,面试官很友善的跟我说可以下去了解下。之后了解到使用分表。
思维逻辑题
题目:给你一个3L的杯子和5L的杯子,如何倒出4L的水?
这是博主遇到的第二道逻辑题,因为有了一次的经验,所以很快就想出了解决方案:将5L倒满,用5L往3L倒满(此时5L剩2L),将3L杯子水倒掉,将5L中剩余的2L水倒入3L中,将5L倒满(此时3L杯中有2L水),用5L向3L倒把3L倒满,5L杯子内的水就是4L。我说完面试官又问我如果反过来倒呢?这个其实也简单,大家可以思考一下。
自我感觉二面很不错,面试官也很和蔼,聊的很开心,二面通过。
百度-测试开发工程师-实习-三面(HR面)
激动!到了三面能不激动吗?
自我介绍
项目介绍
两个有序数组的合并
对上面那个函数进行测试
对一只圆珠笔进行测试
给两部相同手机,在100层楼中,如何操作可以判断手机会摔碎的最低楼层?
个人学习能力如何?举个直接的例子
身为班长,如何处理班内事务
你觉得你和其他人相比你的优势是什么?
大概问的问题就这么多,之后就是对我实习时长的询问,以及问我有什么问题,然后,就没有然后了,等结果!
在我看来,等待才是最煎熬的,尤其是博主在面试时忘记询问结果什么时候会通知,导致一天登录三次百度的个人招聘中心,看着那个大大的“安排面试中”,心里纠结的要死,以为很快能得到的结果,却一直没有消息,来到了4月24日的晚上,当时博主心里已经放下了,不论成不成,还是要复习面对25日上午的360的面试的,就在博主专心致志看缓存相关的知识的时候,北京打来电话,HR告知我三面通过,两天内会给我发来电子offer,瞬间感觉自己满血复活了,泪流满面〒▽〒,我容易吗(不过在面试过程中踩的坑,不会的题,还是要怪自己在大学三年以来没有好好学,因为是实习面试,所以综合来看各个公司的面试问的问题也都是最基础的问题,并没有过难的问题,不会?那就是自己没有学好的原因了。)。兴奋归兴奋,还是要好好准备明天的面试,让室友上课帮我请好假,专心复习。
360-PHP开发工程师-实习-一面
自我介绍
项目介绍
项目功能具体介绍
项目遇到的难点
通过项目提高了什么
360的一面给我的感觉看似简单,没有问过多的基础性的问题,但全称都在围绕着自己做的项目展开,问的特别细,甚至当博主在回答自己遇到的困难,自己如何解决的时候,面试官还会提出自己的疑问,“这个知识点不是应该怎么怎么样吗?”,然后又跟上一句,“不过你作为实习生来说,做到这个程度也还算不错了”,吓得博主一身冷汗,一面过。
360-PHP开发工程师-实习-二面
自我介绍
项目介绍
简述你了解的网络协议
有使用到缓存吗
有做过单元测试吗
对我们部门有什么想问的么
二面自我感觉还是很顺利的,和面试官聊的很嗨,最后他还给了我一些接下来学习方向性的建议(针对我投的这个职位),人很好。二面过。
360-PHP开发工程师-实习-三面(HR面)
自我介绍
项目介绍
自己和他人比有什么优势
学习能力如何
有没有投其他公司
你对于你们学校的计算机相关专业的课程怎么看?
对于我们还有什么问题吗?
三面HR小姐姐人也很好,360的三次面试给我的整体感觉就是很和蔼,很友好,在视频面试结束没多久,他们那边就打过来电话,告知我三面都过了,等待通知吧。我在这里想说明一点,大家可能觉得360的面试过于简单,其实不然,首先,他们对于项目的挖掘很深,其次,我投递的部门并不属于360的核心部门,因此面试可能会相对来说容易一些,如果是360的核心部门,比如安全,比如搜索,面试的难度将会大大的提升(博主当初投递时懵懂无知,并没有考虑到部门的因素,大家投简历如果条件允许,一定要先考虑部门怎么样。)。
至此,博主的春招实习求职历程算是告一段落了,当然,如果有机会,博主还会继续投递简历,毕竟各个公司的面试不同,多面可以提升自己的经验,让自己在秋招的时候总不至于什么都不知道,有了这些宝贵的经验, 相信大家在秋招时一定能斩获更多的offer,一起朝着梦想加油!(若还有公司的面试经验,博主会继续更新。)