来自新浪微博的面试题
使用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的引用
本帖已被设为精华帖!
本帖由系统于 6年前 自动加精
高认可度评论:
第一题应该考的是
strtotime
php内核解析-引用
第一题应该考的是
strtotime
:thumbsup:
第二题真不错。没想到。。。反正我肯定想不到这个结果。。。
看样子是进不去新浪了 ?
猴子的问题似乎不需要递归? :grinning:
@Kerwin 递归算的次数少了点咯
新浪的题挺简单的,猴子选大王这题好多公司用啊
`$arr=
[
'赵','钱','孙','李',
'周','吴','郑','王',
'冯','陈','褚','魏',
'蒋','沈','韩','杨'
];
function countM($arr,$step)
{
$i=1;
}`
猴子的问题, 代码如下:
猴子问题:
写一个环形队列,问题就迎刃而解了。
结果:
@Kerwin Note: 如果用 array_push() 来给数组增加一个单元,还不如用 $array[] = ,因为这样没有调用函数的额外负担。
欢迎指正