面试题,你准备好了么?

当今求职者时经常会遇到一些怪异或者闻所未闻的面试题,如:

谷歌创始人面试题:如何把布林(创始人)的灵魂卖给魔鬼?


微软面试题:为什么下水道井盖是圆的?
当然这么怪异的题在中国并不多见,但可以从侧面看到IT公司对面试者的思维的活跃度、逻辑的正确性等等要求之高。当然这两道题并没有准确的答案,仁者见仁智者见智。
好了,思考过怪异问题后让我们思考些靠谱的实际的面试问题。下面这是一道面试题,专门为PHP程序员而出。
说:树上qi个猴,地下yi个猴,一共几个猴?哈哈,不开玩笑了。
真题在下面:
一群猴子排成一圈,按1,2,...,n依次编号。然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去...,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大王。要求编程模拟此过程,输入m、n, 输出最后那个大王的编号。(参数自己给定)
希望看完这贴对你有所帮助哦!
<?php
/*
*/
//编号为n,猴子个数为m
function myfilter($val){
        return $val != $GLOBALS['out'];
}
/**
*@name 上题的函数    
*@param number number
*@return number 最后当大王的猴子数
*@author 李洋
*
*/
function monkeyNum($n,$m){
    $GLOBALS['mod'] = empty($GLOBALS['mod'])?$m:$GLOBALS['mod'];
    //每次out一个元素后的数组,全局
    $GLOBALS['monkeyArr'] = empty($GLOBALS['monkeyArr'])? range(1,$m) : $GLOBALS['monkeyArr'];

    //数组后添加$i次数组用于取值
    for($i = 0; $i <= $n; $i++){
        if(($i*$m+$GLOBALS['mod']) >= $n){
            //return $i;
            /* echo $i;
            echo '
'; */    
            break;
        }

    }
    //组装一个新数组将他循环添加到数组元素个数大于等于编号数的一个新数组
    //新数组的初始值
    print_r($GLOBALS['monkeyArr']);
    echo '<hr />';

    $newArr = empty($GLOBALS['begin']) ?$GLOBALS['monkeyArr'] : $GLOBALS['begin'];
    for($j = 0; $j < $i; $j++){
        $newArr = array_merge($newArr,$GLOBALS['monkeyArr']);
    }
    print_r($newArr);
    echo '
';
    //数组中弹出的元素
    $GLOBALS['out'] = $newArr[$n-1];
    echo $GLOBALS['out'];
    echo '<br />';
    //数组截取后的剩余元素付给newArr的初值
    $GLOBALS['begin'] = array_slice($newArr,$n);
    //截取后猴子元素组成的新数组

    $GLOBALS['monkeyArr'] = array_values(array_filter($GLOBALS['monkeyArr'],'myfilter'));
    print_r($GLOBALS['monkeyArr']);
    echo '<hr />';

    if(count($GLOBALS['monkeyArr']) == 1){
        echo $GLOBALS['monkeyArr'][0];
    }else{
        $GLOBALS['mod'] = count($GLOBALS['begin']);
        $m = count($GLOBALS['monkeyArr']);
        monkeyNum($n,$m);
    }    
}
monkeyNum(5,5);

原文地址: http://bbs.lampbrother.net/read-htm-tid-152592.html
<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(32) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值