解析 BAT 大廠的經典面試題(下篇)

 解析 BAT 經典面試題

Hello,大家好。我是公衆號 “八點半技術站” 的小編 - Bruce.D。

今天是週一(2020-06-08),分享一句諺語 “讀書有三到,心到口到眼到” 分享給大家的是 「工具 模塊」- 解析BAT面試題(下篇)

很多人對 BAT 以及其他大廠,也是朝思暮想。也因爲一些原因,暫時還未能加入。大廠中有很多經典面試題,直到現在也會用,不要問小編爲什麼知道(保密)。

因此歡迎熱愛 IT編程的各位精英,歡迎進入wechat技術羣(底部有二維碼)一起交流成長

花幾分鐘時間看看經典BAT面試題,瀏覽瀏覽,或許對你有用!!!

1

1. PHP 中的垃圾回收機制

主要分爲三部分:

    (1)引用計數基本知識

    (2)回收週期(Collecting Cycles)

    (3)性能方面考慮的因素

具體建議參考PHP官方手冊:

https://www.php.net/manual/zh/features.gc.php

Q:爲什麼推薦直接瞭解官方地址呢?

A:我谷歌搜索了一遍,感覺普遍博主講的也就是將官方的粘貼出來,簡單改了改,只有極少部分博主採用自己想法的話述。與其這樣搜索,還不如直接去官方瞭解,豈不美哉。

2

2. Hash 數據結構

主要分爲 數組 + 鏈表

哈希表(Hash table,也叫散列表)

官方:是根據鍵(Key)而直接訪問在內存存儲位置的數據結構。也就是說,它通過計算一個關於鍵值的函數,將所需查詢的數據映射到表中一個位置來訪問記錄,這加快了查找速度。這個映射函數叫做散列函數,存放記錄的數組叫做散列表

自家大白話:通過把Key通過一個固定的算法函數(hash函數)轉換成一個整型數字,然後就對該數字對數組的長度進行取餘,取餘結果就當作數組的下標,將value存儲在以該數字爲下標的數組空間裏。

當使用hash表查詢時,就是使用hash函數將key轉換成對應的數組下標,並定位到該下標的數組空間裏獲取value,這樣就充分利用到數組的定位性能進行數據定位。

3

3. PHP 如何定義編碼形式?

倆種方式:

(1)如果欲使用gb2312編碼,那麼php要輸出頭:

header(“Content-Type: text/html; charset=gb2312")

靜態頁面添加:

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

所有文件的編碼格式爲ANSI,可用記事本打開,另存爲選擇編碼爲ANSI,覆蓋源文件。

(2)如果欲使用utf-8編碼,那麼php要輸出頭 :

header(“Content-Type: text/html; charset=utf-8")

靜態頁面添加:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

所有文件的編碼格式爲utf-8。

4

4. 佔位符是如何防止sql注入的?

案例:

$dbh = new PDO("mysql:host=localhost; dbname=demo","user","pass");
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES,false); 
$dbh->exec("set names 'utf8'"); 
$sql="select * from test where name = ? and password = ?";
$stmt = $dbh->prepare($sql);
$exeres = $stmt->execute(array($testname, $pass));

Q:拿上面這段demo來說如何防止?

A:當調用 prepare() 時,查詢語句已經發送給了數據庫服務器,此時只有佔位符 ? 發送過去,沒有用戶提交的數據;

當調用到 execute()時,用戶提交過來的值纔會傳送給數據庫,他們是分開傳送的,兩者獨立的,SQL攻擊者沒有一點機會。

(1)你不能讓佔位符 ? 代替一組值;

(2)你不能讓佔位符代替數據表名或列名;

(3)你不能讓佔位符 ? 代替任何其他SQL語法。

恭喜你,又讀完了一篇文章。

在這裏,希望你看完的 每篇文章 都能對自己有所提升(哪怕是幫助你再次鞏固記憶)。

微信 : xzzs730(長按左側二維碼添加)

技術交流羣備註技術

PHP|WEB|Java面試羣:備註面試

商務合作:gtcarry888

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章