最近项目组非常缺人,要招聘PHP,很快发现其实人还是挺缺的。来面试的不少,但是对笔试题目答的非常不理想。25个题目里,能做到10个的似乎已经非常厉害了,由于题目是我设计的,很多我想考核的预期目标,没有很好的考到,这里我做个我命的这套题目的一些意图。
1.写出五个数组函数。例如array
本题是一个非常基础的PHP函数默写,有人会觉得php函数不用识记,直接翻手册即可,表面上看这样的,但是如果基本的函数都写不出来,说明的问题是基础非常的不扎实,这种人就算做了很多项目,会发现积累非常低,很多高级点的功能完全没法进行组合。比如判断一个数组是否存在某个键值,或者随机打乱的。下面是项目里常常用的函数数组:
In_array($str,$arr1) 检测某个字符串或者值在$arr1里面
同步对应的有array_key_exists($key,$arr) 检测是不是存在某个键值
主要应用场景:比如UCenter检测用户传递过来的需要进行模型化的文件是否符合要求,不符合要求的全部跳转到指定的首页。
Array_merge($arr1,$arr2) 把$arr1和$arr2进行合并
Array_diff($arr1,$arr2) 相当于$arr1减去$arr2
主要应用场景:做配置的时候,常常需要将用户的默认配置覆盖掉默认位置,这样就可以直接用array_merge函数
Count($arr) 计算一个数组的长度 sizeof($arr) 是其对应的别名
Shuffle($arr) 把一个数组打乱数序
应用场景:将广告文本和正常文本混合在一起,希望广告随机展现的时候,可以将其组装成一个数组后,进行使用。
Array_shift($arr) 将数组的第一个元素弹出,array_pop将数组的最后一个元素弹出来
都是直接直接改变原数组 一般主要用来做队列的时候,需要使用。
Array_reverse($arr) 翻转数组 一般用来翻转中文字符串的时候使用
Sort($arr) 把数组按照值进行排序
Array_map(‘test’,$arr) 把$arr 进行回调处理(关于回调的处理已经比较高级了)
2.写出5个超全局变量(超全局变量意味着并不需要global $var 就可以直接使用的)
$GLOBALS 全局作用域的全部变量
$_SERVER 服务器端的变量
$_REQUEST 请求的综合变量
$_COOKIE 可以根据这个读取cookie
$_SESSION session
$_POST $_GET
3.获取客户端ip的方法
如果没有代理 直接$_SERVER[‘REMOTE_ADDR’]
如果有代理了(这里暂时只有一层代理)
$_SERVER['HTTP_X_FORWARDED_FOR']
HTTP_X_FORWARDED_FOR
4.正则写出一个常用手机号码
这个题目可以很难 这里考的很简单
^[1][358][0-9]{9} $
5.写出一个二维数组排序的算法
这个主要是考下核心算法能力(一般的算法都比二维排序简单)
usort($arr,function($a,$b){
If(count($a)=count($b)) {
Return 0 ; }
Return (count($a)>count($b))?-1:1;
}