一、寫(xiě)一個(gè)函數(shù),獲取一篇文章內(nèi)容中的全部圖片,并下載
function download_images($article_url = ”, $image_path = ‘tmp’){
// 獲取文章類(lèi)容
$content = file_get_contents($article_url);
// 利用正則表達(dá)式得到圖片鏈接
$reg_tag = ‘//’;
$ret = preg_match_all($reg_tag, $content, $match_result);
$pic_url_array = array_unique($match_result1[1]);
// 創(chuàng)建路徑
$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);
}
}
}
}
二、什么是 CSRF 攻擊?XSS 攻擊?如何防范?CSRF:跨站請(qǐng)求偽造,可以通過(guò)通過(guò)判斷來(lái)源和加 Token 的方式來(lái)防范。
XSS:跨站腳本攻擊,可以通過(guò)對(duì)內(nèi)容轉(zhuǎn)義和過(guò)濾來(lái)防范,還有 CSP
三、應(yīng)用中我們經(jīng)常會(huì)遇到在 user 表隨機(jī)調(diào)取 10 條數(shù)據(jù)來(lái)展示的情況,簡(jiǎn)述你如何實(shí)現(xiàn)該功能。
SELECT * FROM `table` WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORD
主鍵:絕對(duì)不能有空值。唯一索引:可以有空值
五、http 與 https 的主要區(qū)別
關(guān)鍵是 S 上。簡(jiǎn)而言之,https 建立連接后要先把 SSL 的證書(shū)發(fā)下去,有了公鑰和私鑰,就可以解密了。
六、兩臺(tái) mysql 服務(wù)器,其中一臺(tái)掛了,怎么讓業(yè)務(wù)端無(wú)感切換,并保證正常情況下講臺(tái)服務(wù)器的數(shù)據(jù)是一致的
不是核心業(yè)務(wù)的話(huà),先停寫(xiě),把備機(jī)拉起來(lái),查看兩臺(tái)機(jī)器的日志,進(jìn)行數(shù)據(jù)補(bǔ)償,開(kāi)寫(xiě)。
如果是核心業(yè)務(wù)的話(huà),現(xiàn)在所有的操作都在正常的狀態(tài)機(jī)器上。把好的這臺(tái)機(jī)器的備機(jī)拉起來(lái),當(dāng)主機(jī)。
以上全是應(yīng)急操作。實(shí)際上數(shù)據(jù)庫(kù)的容災(zāi)設(shè)計(jì)要復(fù)雜得多。
面試官要是問(wèn)你,備機(jī)的數(shù)據(jù)不一致怎么辦,你要勇敢懟回去,你們每秒多少寫(xiě)入操作。按照百萬(wàn)級(jí)表,每秒 1000 的寫(xiě)入效率,正常的設(shè)計(jì)是,分布在 2 臺(tái)機(jī)器上每臺(tái) 500。這個(gè)級(jí)別的數(shù)據(jù)同步,出現(xiàn)差異的概率 可以忽略不計(jì)的。有一臺(tái)出現(xiàn)問(wèn)題,另一臺(tái)也可以抗住。
(正常的操作,還是先停寫(xiě),等數(shù)據(jù)一致,切換,開(kāi)寫(xiě)。我們公司搞這些切換都是在凌晨 4.00 左右,核心業(yè)務(wù)的每秒寫(xiě)操作,只有十幾個(gè)。前后耽擱不到 20 秒)。
七、10 瓶水,其中一瓶有毒,小白鼠喝完有毒的水之后,會(huì)在 24 小時(shí)后死亡,問(wèn):最少用幾只小白鼠可以在 24 小時(shí)后找到具體是哪一瓶水有毒。
答案:四只二進(jìn)制問(wèn)題。薛定諤的老鼠。
一只老鼠有兩個(gè)狀態(tài),死活,對(duì)應(yīng) 01。假設(shè)老鼠的個(gè)數(shù)為 A,則有 2^A>=10; A=4;
思路很簡(jiǎn)單,十瓶藥編號(hào):0,1,10,11….1001;
0 不喝。第一只老鼠喝所有個(gè)位是 1 的:13579,第二只喝十位是 1 的,第三只和百位是 1 的,第四只喝千位是 1 的。
24 小時(shí)后,看下死了的是 1,活著的是 0。按老鼠的順序乖乖站好…… 假如第一只和第三只死了,那就是 0101,就是 5 有問(wèn)題。