笔试题:
1、常见的http状态码。
2、什么是存储过程,有什么优缺点?
3、什么是csrf攻击、xss攻击、sql注入?如何预防?
4、简述数据库的乐观锁、悲观锁、共享锁的概念。
5、有以下表结构
Student(S#,Sname)
Cource(C#,Cname)
SC(S#,C#,score)
Teacher(T#,Tname)
写出以下sql语句:
1)查询出所有课程001的成绩大于课程002成绩的学生ID;
2)查询出一个学生的ID、name、所修课程总数以及总分数。
6、现有一个无序数组A包含20000条数据,另一无序数组B包含10000条数据,如何快速判断B中数据是否存在于A中?(跟算法题放在一起,我以为是个算法题,懵逼了好一会儿,结果最后面试官说只需要一个PHP的函数就能实现了,比较基础常用的数组操作函数,应该很简单。。。我知道很简单啊,我知道是哪个函数啊,我想多了啊。。。)
7、一个比较简单的算法题,忘了
8、打印回型矩阵和蛇型矩阵
9、现有一个文章类博客,用户量上亿级,文章量10万以上,每日更新量20万以上,访问量200万以上,请从服务器方面、网络方面、数据库方面、系统方面等概述该博客程序的架构设计,可自由发挥。
问答(面试官问的毫无章法,想到哪就问到哪了):
1、http状态码像30、40、50*都有什么含义?代表正常的状态码是什么?
2、http请求的header里都有什么,有了解过没?
3、既然有在项目中使用过shell编程,能不能写一个搜索匹配日志文件的shell脚本,搜索要求是根目录开始,下面可能有二级或三级甚至更多级目录,然后以.log结尾
4、常用的linux命令awk、find、pwd...都有什么作用
5、linux的定时任务crontab的最小时间级是?
答:年月日时分,最小精确到分钟。
问:最小精确到分钟,那项目中的每秒请求是如何实现的?
答:如果只通过定时任务,可以通过延时sleep来实现,不过这样需要写很多条命令,比如每分钟执行30次,就需要写30条命令(面试官脸色变了),不过还有更好的方式,就是通过编写一个shell脚本进行一分钟内的延时执行,再由定时任务去每分钟执行这个shell脚本来实现。(面试官脸色恢复)
6、数据库索引有了解过?现在假设有一张用户表包含id、name、sex字段,sex字段仅包含1/2代表男女,至于还有3/4/5什么的就不考虑了(也挺幽默),现在这张表存储的数据量达到上万甚至上千万级别的,该如何建立索引?(如果只是单表查询,很显然除了主键索引,剩下的也就是只需要在name字段上建立索引了,但是这么回答之后,面试官却貌似不太满意,又强调了姓名可能会重复,但是重复貌似对普通索引没什么影响,面试官还再次问是否还需要其他索引,答不需要了,这个问题就直接过了,有点懵)
7、问了一些有关简历上所写的项目的一些问题,负责什么、都完成了什么等等等等(一般就是为了看看项目是不是真的是你下了很多功夫参与的,而不仅仅是挂个名字,正常应付就行了)
对项目中使用的Workman是否有详细了解过?
8、PHP创建一个目录的代码如何实现?(面试官准备的问题估计问的差不多了,又回到PHP,简单,mkdir())
对PHP的常用函数有多少了解?(balabala一大堆,问题过)
学PHP多长时间了?(在学校的一年多时间,面试官面无表情,问题过)
后面又闲聊了一阵,聊了聊薪资问题,住地问题,表达了一下自己珍惜这个实习机会的意愿,最后说如果HR那边通过,那这个事儿就直接定了(但是同一批的实习生太多了,没有见到HR,让等通知,八成凉凉)
个人总结:总体来说相比昨天去融360的面试,状态上要好了很多,但是技术上的学习深度仍然是需要花费很多时间来补的短板,所以技术上没什么优势,个人感觉如果还有闲聊的机会和时间,一定要机灵一点,多表达一下自己的意愿,面试官又不是没有人情的动物,总会有一些地方能打动他的,就像我这次聊完薪资、住地问题,面试官让我等HR通知的时候,我又表达了一下自己的意愿,面试官临走又补充了几句:“我会把你的这些情况都跟HR说一下,也希望咱们有共事的机会”。嗯,感觉面试官的态度又进一步好了不少。