博客列表 >作业帮面试

作业帮面试

大鱼
大鱼原创
2018年02月02日 10:08:571110浏览

一面

优惠券排序:一个优惠券有面额和到期时间两种属性,按照面额从大到小排列,如果面额相同,按照到期时间的从小到大的顺序排列
好久没有做过白板编程了,拿到题目的瞬间有点懵,想了好久才想出做法,真是对不起自己吹的牛逼,想到的是最简单最基本的快排(重点:快排的时间复杂度是O(nlogn))

<?php

        class Discount{   

            public $money; 

            public $time;  

             function __construct($money, $time)
             {       

                    $this->money = $money; 

                    $this->time = $time;
               }
        }

    $discounts = [];

    for ($i = 0; $i < 10; $i++) {
       $discount = new Discount(rand(1, 10), time() - rand(1111, 9999));
       array_push($discounts, $discount);
    }
    print_r($discounts);

    function quick_sort($ds){   

            if (count($ds) <= 1) {

                   return $ds;
              } else {
                           $left = [];
                           $right = [];      

                         for ($i = 1; $i < count($ds); $i++) {  

                             if ($ds[$i]->money > $ds[0]->money) {
                                   array_push($left, $ds[$i]);
                           } else if ($ds[$i]->money < $ds[0]->money) {
                               array_push($right, $ds[$i]);
                            } else {               

                                if ($ds[$i]->time <= $ds[0]->time) {
                                   array_push($left, $ds[$i]);
                               } else {
                               array_push($right, $ds[$i]);
                       }
                   }
               }
           $left = quick_sort($left);
          $right = quick_sort($right);     

          return array_merge($left, [$ds[0]], $right);
   }
}

$result = quick_sort($discounts);
print_r($result);

目前没有想到更好的方法,以后想到了或者遇到了在回来修改

MySQL联合索引
一直做得东西数据量都不大,所以没怎么用过索引,这次就正好被问到了,没答出来,这里记录一下
联合索引的好处,一是一个联合索引能抵好几个索引,二是联合索引可以根据最左原则当成单个索引去用

Linux日志分析
这一块是原来完全没有接触过的内容,面试官说了awk之后才知道有这么个好东西,比我平时用的grep好用多了,这里就不多做介绍了,感觉自己还是只记住了名字

二面

有一个文件,里面每一行都是一个url,写一个算法,读取出现最多的五条,及其出现的次数
白板编程,又懵了,硬着头皮写了一个

<?phpfunction make_file(){
   $urls = ['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'];
   $num = count($urls);
   $file = fopen('data.txt', "w");    for ($i = 0; $i < 1000; $i++) {
       fwrite($file, $urls[rand(0, $num - 1)] . "\n");
   }
   fclose($file);
}//make_file();function get_result($filename, $num){
   $arr = [];
   $file = fopen($filename, 'r');    while (!feof($file)) {
       $key = fgets($file);        if ($key != "") {
           array_push($arr, $key);
       }
   }
   fclose($file);
   $counts = array_count_values($arr);
   $results = [];
   $keys = array_keys($counts);
   print_r($keys);    for ($i = 0; $i < $num; $i++) {
       $key = $keys[0];        foreach ($keys  as $k) {            if ($counts["$k"] > $counts["$key"]) {
               $key = $k;
           }
       }
       $results["$key"] = $counts["$key"];        unset($counts["$key"]);
   }
   print_r($results);
}

get_result('data.txt', 5);


作者:血之君殇
链接:https://www.jianshu.com/p/e765e3822676
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议