2015去哪儿校招(长春站)开发笔试题

来源:互联网 发布:中日军机对峙知乎 编辑:程序博客网 时间:2024/05/16 11:02

笔者php菜鸟,上午参加去哪儿校招笔试,趁还记得题目和大家分享一下。

先是开发3道大题(其实也不是很大)

    1. 要求实现一个删除指定数组中数字。

      自己当场函数没想起array_search和array_splice就用foreach+array_merge+array_slice做的,不要见笑~~


      function removeElement(array $arr,$val){

         if($key=array_search($val)){

              return array_splice($arr,$key,1);

          }

          return $arr;//无此数字直接返回原数组

      }


    2. 实现一个餐厅叫号功能,面向两种客户:普通和VIP,普通客户正常排号,VIP随时可插号,但在同类用户中按先后排号。要求实现两个函数 addCusomer(string phoneNum) 和current()

      按我的理解就写了个类,但是成员函数中调用变量忘记$this去调用了,哎画蛇添足~~

      修正版


      class MarketCall{
          private $common=array();
          private $this->vip=array();

          function is_VIP($phone){
              //判断是否为VIP
          }

          function addCustomer($phone){
              if(is_VIP($phone)){
                  array_push($this->vip,$phone);
              }else{
                  array_push($this->$common, $phone);
              }
          }

          function current(){
              if(!empty($this->vip)){
                  return array_shift($this->vip);
              }
              if(!empty($this->common)){
                  return array_shift($this->common);
              }
              return NULL;
          }
      }


    c.实现中文数字向阿拉伯数字转换,如贰仟叁佰亿===》2300 0000 0000

    对于这个题目比较常见我就说我的方法不写代码了

      1. 建立两个数组.      

        1. num:一个是0-9的汉字对应 像 '壹'=>1;另一个是

        1. lev: 进制位的汉字对应 像 '百'=>100

    1.        然后对汉字进行从左向右遍历,如当前字符存在于num的键值中就转换为数字,如如是lev的键值就与对应进制相乘

    2.        还有要注意的是每遇到 亿 或 万 就将之前计算结果保存,然后归零变量,以免重复进制相乘。




然后有两道前段题目(选做

  1. 画出CSS盒模型,并用js代码写出求div的宽度和位置信息,考虑兼容

    笔者css一般,但是盒模型还是绘画的,毕竟firefox里经常见到,但是兼容求宽高就不会了,直接写的jQuery的width()和position()方法,这里就不误导大家了

  2. 对一个数组(如[1,2,3,4,5])的元素顺序打乱输出,到要求100次内不重复

    我当时的思路是Math.random()随机打乱+闭包函数保存已随机过的数组键拼接字符串用于唯一判断

    但回来想保存值序列不更好么,另查了大神的打乱数组方式,综合一下,和大家分享




    <script>
    function random(a, b){
    //用于打乱数组的排序函数
        return Math.random()>.5 ? -1 : 1;
    }
    //闭包函数
    var uniqueArr=(function(uniqueStr){
            var arr=[];
            return function(uniqueStr){
                for(var i=0,len=arr.length;i<len;i++){
                    if(arr[i]==uniqueStr){
                        return false;
                    }
                }
                arr.push(uniqueStr);
                return arr;
            };
        })(null);
    //打乱数组函数
    function randomSort(arr){
        var res=arr.sort(random);//打乱的数组
        var keys=res.join('');//数组值串
        
        if(un=uniqueArr(keys)){//不重复
            //console.log(un,res);//测试用
            return res;
        }else{
            return randomSort(arr);
        }
    }
    var arr = [1, 2, 3, 4, 5];
    randomSort(arr);
    randomSort(arr);
    randomSort(arr);
    randomSort(arr);
    randomSort(arr);
    </script>


然后是测试,不感冒,但是看着是要考 代码测试和案例分析

最后是android开发的选做题,问的是MVC,Activity后台生命周期,还有一个忘了,网上应该能查到。

欢迎与我讨论,提高。

                                --phpnewbie


0 0
原创粉丝点击