来自新浪微博的面试题
使用 PHP 打印前一天的时间,格式如 2017-05-23 05:22:59#
echo date('Y-m-d H:i:s',time()-3600*24);
以下代码会输出什么?#
$a=2;
$b=&$a;
$a="2$b";
echo $a.','.$b;
22,22
$arr 的值是什么,为什么?#
$arr=[1,2,3];
foreach ($arr as &$v){
//nothing to do
}
foreach ($arr as $v){
//nothing to do
}
var_export($arr);
答案:array (0 => 1,1 => 2,2 => 2)
, 运行 foreach ($arr as &$v)
时
//这个过程相当于
$arr=[1,2,3];
&$v=$arr[0];//$v成为$arr[0]的引用
&$v=$arr[1];//$v成为$arr[1]的引用
&$v=$arr[2];//$v成为$arr[2]的引用
//此处结束$arr=[1,2,3];
$v=$arr[0];//因为作用域被改变的原因,此处$v实际上是$arr[2]的引用,相当于$arr[2]=$arr[0];$arr=[1,2,1];
$v=$arr[1];//相当于$arr[2]=$arr[1];$arr=[1,2,2];
$v=$arr[2];//相当于$arr[2]=$arr[2];$arr=[1,2,2];
有一群猴子玩游戏,手拉手排成一个圆环,第一轮从第一个猴子开始数,数到 X 个,剔出圆环,后面从剔出的这个位置开始数,还是数 X 个,再剔出,直到这个圆环剩下最后一个猴子为赢家,用代码描述这一过程.#
答案:用递归,注意这是一个圆环,不是队列,尾巴上的数完,又从头部开始数。具体代码略.
用实际代码实现一个商品秒杀功能,要求用户不能重复下单,用户下单后有 15 分钟可以进行支付,到期未支付的商品回到商品池,该用户不能再次购买这件商品#
答案:用 redis, 注意考虑临界状态,自己要实现锁。代码略.
参考资料:php 的引用
推荐文章: