中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

經典的PHP高級工程面試題分享

發布時間:2020-04-17 10:17:27 來源:億速云 閱讀:264 作者:小新 欄目:編程語言

今天小編給大家分享的是經典的PHP高級工程面試題,很多人都不太了解,今天小編為了讓大家更加了解PHP高級工程面試題,所以給大家總結了以下內容,一起往下看吧。一定會有所收獲的哦。

經典的PHP高級工程面試題分享

1.PHP 如何實現不用自帶的 cookie 函數為客戶端下發 cookie。對于分布式系統,如何來保存 session 值。

這個題有點繞。考的還是 COOKIE 和 SESSION 的基礎知識。服務端通過 set-cookie 命令來通知客戶端保存 cookie。

只要按照 domain path 過期時間等規則 用 header 函數就可以實現。

分布式系統 session,集中處理。按我們公司的架構,為了實現高可用和高容災,提供一個分布式的驗簽服務。具體的可以看下 redis 的分布式服務架構。

2、數據庫中的存放了用戶 ID, 扣費很多行,redis 中存放的是用戶的錢包,現在要寫一個腳本,將數據庫中的扣費記錄同步到 redis 中,每 5 分鐘執行一次。請問要考慮哪些問題?

思路:生產者和消費者模式。這個問題也沒有說其他的狀態,比如數據庫的數據會實時增加么?redis 中每個錢包是否有其他服務在讀取或者寫入啊。什么的。數據庫和 REDIS 放一起,要么考數據一致性,要么考出現鎖,導致效率降低。

3、根據 access.log 文件統計最近 5 秒的 qps,并以如下格式顯示,01 1000(難點在 01 序號)

tail -f access.log | awk -F '[' '{print $2}' | awk '{print $1}' | uniq -c

4.redis 是如何進行同步的,同步的方式,同步回滾怎么辦,數據異常怎么辦,同時會問 MYSQL 的同步方式和相關異常情況

redis 集群主從同步的簡單原理

Redis 的復制功能是基于內存快照的持久化策略基礎上的,也就是說無論你的持久化策略選擇的是什么,只要用到了 Redis 的復制功能,就一定會有內存快照發生。

當 Slave 啟動并連接到 Master 之后,它將主動發送一個 SYNC 命令 (首先 Master 會啟動一個后臺進程,將數據快照保存到文件中 [rdb 文件] Master 會給 Slave 發送一個

Ping 命令來判斷 Slave 的存活狀態 當存活時 Master 會將數據文件發送給 Slave 并將所有寫命令發送到 Slave )。

Slave 首先會將數據文件保存到本地 之后再將 數據 加載到內存中。

當第一次鏈接 或者是 故障后 重新連接 都會先判斷 Slave 的存活狀態 在做全部數據的同步 , 之后只會同步 Master 的寫操作 (將命令發送給 Slave)

問題:

當 Master 同步數據時 若數據量較大 而 Master 本身只會啟用一個后臺進程 來對多個 Slave 進行同步 , 這樣 Master 就會壓力過大 , 而且 Slave 恢復的時間也會很慢!

redis 主從復制的優點:

(1)在一個Redis集群中,master負責寫請求,slave負責讀請求,這么做一方面通過將讀請求分散到其他機器從而大大減少了master服務器的壓力,另一方面slave專注于提供

讀服務從而提高了響應和讀取速度。

(2) 在一個 Redis 集群中,如果 master 宕機,slave 可以介入并取代 master 的位置,因此對于整個 Redis 服務來說不至于提供不了服務,這樣使得整個 Redis 服務足夠安全。

(3) 水平增加 Slave 機器可以提高性能

經典的PHP高級工程面試題分享

5.兩臺 mysql 服務器,其中一臺掛了,怎么讓業務端無感切換,并保證正常情況下講臺服務器的數據是一致的

不是核心業務的話,先停寫,把備機拉起來,查看兩臺機器的日志,進行數據補償,開寫。

如果是核心業務的話,現在所有的寫操作都在正常的狀態機器上。把好的這臺機器的備機拉起來,當主機。

以上全是應急操作。實際上數據庫的容災設計要復雜的多。

面試官要是問你,備機的數據不一致怎么辦,你要勇敢懟回去,你們每秒多少寫入操作。按照百萬級表,每秒 1000 的寫入效率,正常的設計是,分布在 2 臺機器上每臺 500。這個級別的數據同步,出現差異的概率 可以忽略不計的。有一臺出現問題,另一臺也可以抗住。

(正常的操作,還是先停寫,等數據一致,切換,開寫。我們公司搞這些切換都是在凌晨 4.00 左右,核心業務的每秒寫操作,只有十幾個。前后耽擱不到 20 秒)。

6.請寫出自少三種截取文件名后綴的方法或函數(PHP 原生函數和自己實現函數均可)

echo substr(strrchr($file, '.'), 1);
echo substr($file, strrpos($file, '.')+1);
$arr=explode('.', $file);
echo $arr[count($arr)-1];
$arr=explode('.', $file);
echo end($arr);
echo strrev(explode('.', strrev($file))[0]); 
echo pathinfo($file)['extension'];
echo pathinfo($file, PATHINFO_EXTENSION);

7.寫一個函數,獲取一篇文章內容中的全部圖片,并下載

function download_images($article_url = '', $image_path = 'tmp'){
 
    // 獲取文章類容
    $content = file_get_contents($article_url);
 
    // 利用正則表達式得到圖片鏈接
    $reg_tag = '/<img.*?\"([^\"]*(jpg|bmp|jpeg|gif|png)).*?>/';
    $ret = preg_match_all($reg_tag, $content, $match_result);
    $pic_url_array = array_unique($match_result1[1]);
 
    // 創建路徑
    $dir = getcwd() . DIRECTORY_SEPARATOR .$image_path;
    mkdir(iconv("UTF-8", "GBK", $dir), 0777, true);
 
    foreach($pic_url_array as $pic_url){
        // 獲取文件信息
        $ch = curl_init($pic_url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_NOBODY, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE );
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE );
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $fileInfo = curl_exec($ch);
        $httpinfo = curl_getinfo($ch);
        curl_close($ch);
 
        // 獲取圖片文件后綴
        $ext = strrchr($pic_url, '.');
        $filename = $dir . '/' . uniqid() . $ext;
 
        // 保存圖片信息到文件
        $local_file = fopen($filename, 'w');
        if(false !== $local_file){
            if( false !== fwrite($local_file, $filecontent) ){
            fclose($local_file);
            }
        }
    }
 
}

10.瓶水,其中一瓶有毒,小白鼠喝完有毒的水之后,會在 24 小時后死亡,問:最少用幾只小白鼠可以在 24 小時后找到具體是哪一瓶水有毒。

四只

二進制問題。薛定諤的老鼠。

一只老鼠有兩個狀態,死活,對應 01。假設老鼠的個數為 A,則有 2^A>=10; A=4;

思路很簡單,十瓶藥編號:0,1,10,11....1001;

0 不喝。第一只老鼠喝所有個位是 1 的:13579,第二只喝十位是 1 的,第三只和百位是 1 的,第四只喝千位是 1 的。

24 小時后,看下死了的是 1,活著的是 0。按老鼠的順序乖乖站好…… 假如第一只和第三只死了,那就是 0101,就是 5 有問題。

以上就是經典的PHP高級工程面試題的詳細內容了,看完之后是否有所收獲呢?如果想了解更多相關內容,歡迎來億速云行業資訊

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

广安市| 白山市| 缙云县| 靖安县| 金湖县| 长泰县| 石城县| 静安区| 页游| 印江| 昌都县| 理塘县| 遂川县| 襄垣县| 聂拉木县| 治县。| 山阴县| 牟定县| 禹州市| 塔城市| 安庆市| 永春县| 荆州市| 富顺县| 科技| 方山县| 梅河口市| 武陟县| 永康市| 衡东县| 陆丰市| 资兴市| 呼玛县| 万山特区| 彝良县| 平乐县| 延寿县| 鄢陵县| 榆中县| 庆安县| 沾益县|