作業(yè)幫PHP面試

一面

  1. 優(yōu)惠券排序:一個(gè)優(yōu)惠券有面額和到期時(shí)間兩種屬性,按照面額從大到小排列,如果面額相同,按照到期時(shí)間的從小到大的順序排列
    好久沒(méi)有做過(guò)白板編程了,拿到題目的瞬間有點(diǎn)懵,想了好久才想出做法,真是對(duì)不起自己吹的牛逼,想到的是最簡(jiǎn)單最基本的快排(重點(diǎn):快排的時(shí)間復(fù)雜度是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);

目前沒(méi)有想到更好的方法,以后想到了或者遇到了在回來(lái)修改

  1. MySQL聯(lián)合索引
    一直做得東西數(shù)據(jù)量都不大,所以沒(méi)怎么用過(guò)索引,這次就正好被問(wèn)到了,沒(méi)答出來(lái),這里記錄一下
    聯(lián)合索引的好處,一是一個(gè)聯(lián)合索引能抵好幾個(gè)索引,二是聯(lián)合索引可以根據(jù)最左原則當(dāng)成單個(gè)索引去用
  2. Linux日志分析
    這一塊是原來(lái)完全沒(méi)有接觸過(guò)的內(nèi)容,面試官說(shuō)了awk之后才知道有這么個(gè)好東西,比我平時(shí)用的grep好用多了,這里就不多做介紹了,感覺(jué)自己還是只記住了名字

二面

  1. 有一個(gè)文件,里面每一行都是一個(gè)url,寫(xiě)一個(gè)算法,讀取出現(xiàn)最多的五條,及其出現(xiàn)的次數(shù)
    白板編程,又懵了,硬著頭皮寫(xiě)了一個(gè)
<?php
function 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);

寫(xiě)完面試官問(wèn)還有沒(méi)有更好的辦法,沒(méi)有回答上來(lái),然后面試官給我指了指大門(mén)的位置……
作業(yè)幫,敗北

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 2017年9月11日 14:00開(kāi)始面試 總體來(lái)說(shuō),面試的難度偏難,先梳理一下面試的知識(shí)點(diǎn)(可能不夠全面,想到哪寫(xiě)...
    指尖流年閱讀 6,040評(píng)論 0 5
  • 當(dāng)我最初開(kāi)始參加編程面試的時(shí)候,我所有最心儀的公司都忽視了我?,F(xiàn)在回頭看那個(gè)時(shí)候,我發(fā)現(xiàn)自己當(dāng)時(shí)去參加面試都完全沒(méi)...
    bd3250545d54閱讀 1,415評(píng)論 1 21
  • 當(dāng)我最初開(kāi)始參加編程面試的時(shí)候,我所有最心儀的公司都忽視了我?,F(xiàn)在回頭看那個(gè)時(shí)候,我發(fā)現(xiàn)自己當(dāng)時(shí)去參加面試都完全沒(méi)...
    Nextoffer閱讀 9,140評(píng)論 14 168
  • 此時(shí)此刻累得躺在沙發(fā)上,一點(diǎn)兒也不愿意動(dòng)。超負(fù)荷的工作使我?guī)缀跻郯c了! 早晨上了兩節(jié)課,已經(jīng)累到不行...
    唯美兒閱讀 419評(píng)論 0 1

友情鏈接更多精彩內(nèi)容