一面
优惠券排序:一个优惠券有面额和到期时间两种属性,按照面额从大到小排列,如果面额相同,按照到期时间的从小到大的顺序排列
好久没有做过白板编程了,拿到题目的瞬间有点懵,想了好久才想出做法,真是对不起自己吹的牛逼,想到的是最简单最基本的快排(重点:快排的时间复杂度是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
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。