一些PHP面試題目

來源:互聯網
上載者:User

前言生活總是要往前看,等待了一天也沒有阿里的面試通知,心情是相當灰暗,但是生活總要繼續,還是要向前看,做幾道PHP的面試題目,畢竟我的主要開發語言還是PHP
題目1、一個包含中英文的字串如何獲得它的自然長度
需要考慮漢字的字元編碼,注意UTF-8中一個漢字佔3個位元組

<?php/** * 擷取中英文混排的字串的長度 */$str = "還沒等到阿里的面試通知123456";$nor_len = mb_strlen($str, "utf8");echo $nor_len."<br>";$len = strlen($str);echo $len."<br>";


2、問一問什麼是ORM,有時候會問這個詞的英文全稱是什麼,問問ta對於ORM有什麼個人的看法
對象關係映射(Object Relationl Mapping,簡稱ORM)是一種為瞭解決物件導向與關聯式資料庫存在的互不匹配的現象的技術。簡單的說,ORM是通過使用描述對象和資料庫之間映射的中繼資料,將程式中的對象自動持久化到關係型資料庫中。本質上是將資料從一種形式轉換到另一種形式

3、


所以就算不用架構,自己代碼裡也可以做到mvc分層

4、問一問framework設計裡的url dispatcher他會怎麼考慮
還是MVC的問題,可以通過url進行設計:http://example.com/<controler>/<action>/<id>/, 還可以通過nginx的rewrite進行跳轉

5、如何訪問會話變數(session)?
A.通過$_GET
B.通過$_POST
C.通過$_REQUEST
D.通過全域變數
E.以上都不對
E,解釋:session變數只能通過$_SESSION數組獲得

6、
set-Cookie: foo=bar;

解答:setcookie('foo', 'bar', time() + 3600);

7、在忽略瀏覽器bug的正常情況下,如何用一個與先前設定的網域名稱(domain)不同的新網域名稱來訪問某個cookie?
A.通過HTTP_REMOTE_COOKIE訪問
B.不可能
C.在調用setcookie()時設定一個不同的網域名稱
D.向瀏覽器發送額外的請求
E.使用Javascript,把cookie包含在URL中發送
B,解釋:cookie不能跨域訪問

8、在HTTPS下,URL和查詢字串(query string)是如何從瀏覽器傳到Web伺服器上的?
A.這兩個是明文傳輸,之後的資訊加密傳輸
B.加密傳輸
C.URL明文傳輸,查詢字串加密傳輸
D.URL加密傳輸,查詢字串明文傳輸
E.為確保加密,查詢字串將轉換為header,夾在POST資訊中傳輸
B,解釋:ssl加密

9、當把一個有兩個同名元素的表單提交給PHP指令碼時會發生什嗎?
A.它們組成一個數組,儲存在超級全域變數數組中
B.第二個元素的值加上第一個元素的值後,儲存在超級全域變數數組中
C.第二個元素將覆蓋第一個元素
D.第二個元素將自動被重新命名
E.PHP輸出一個警告
C
10、如何把數組儲存在cookie裡?
A.給cookie名添加一對方括弧[]
B.使用implode函數
C.不可能,因為有容量限制
D.使用serialize函數
E.給cookie名添加ARRAY關鍵詞
D,解釋:序列化,serialize序列化數組即可,採用implode會丟失關聯陣列的key值

11、以下指令碼輸出什嗎?(E)
<?php
ob_start();
for ($i = 0; $i < 10; $i++) {
echo $i;
}
$output = ob_get_contents();
ob_end_clean();
echo $output;
?>
A.12345678910
B.1234567890
C.0123456789
D.什麼都沒有
E.一個提示
C,解釋:ob_start開啟輸出緩衝,將輸出字元儲存在緩衝區裡。通過ob_get_contents()擷取輸出的字串

12、預設情況下,PHP把會話(session)資料存放區在______裡。
A.檔案系統
B.資料庫
C.虛擬內容
D.共用記憶體
E.以上都不是
A,解釋:預設存在檔案系統裡,為了分布式,一般都放在Nosql資料庫裡,例如nginx+fastcgi+php5_fpm,修改fpm的php.ini session.save_path=tcp://redisip:redisport?auth=redispasswd

14、假設瀏覽器沒有重啟,那麼在最後一次訪問後的多久,會話(session)才會到期並被回收?
A.1440秒後
B.在session.gc_maxlifetime設定的時間過了後
C.除非手動刪除,否則永不到期
D.除非瀏覽器重啟,否則永不到期
E.以上都不對
B或者E,解釋:雖然session有到期機制,預設session.gc_maxlifetime是1440秒,但是必須啟動gc機制才行,gc機制的啟動是有機率的,session分別使用session.gc_probability和session.gc_divisor來確定session的gc機率

15、哪個函數能把換行轉換成HTML標籤<br />?
nl2br

16、index.php指令碼如何訪問表單元素email的值?(雙選)
<form action="index.php" method="post">
<input type="text" name="email"/>
</form>
A.$_GET[‘email’]
B.$_POST[‘email’]
C.$_SESSION[‘text’]
D.$_REQUEST[‘email’]
E.$_POST[‘text’]
BD,解釋:提交方法為POST,所以只能從$_POST和$_REQUEST兩個超級全域變數數組取得值

17、如果不給cookie設定到期時間會怎麼樣?
A.立刻到期
B.永不到期
C.cookie無法設定
D.在瀏覽器會話結束時到期
E.只在指令碼沒有產生伺服器端session的情況下到期
D,解釋:cookie跟session沒有半毛錢關係,唯一的作用可以用cookie儲存session的會話id
18、以下指令碼將如何影響$s字串?(雙選)
<?php
$s = '<p>Hello</p>';
$ss = htmlentities ($s);
echo $s;
?>
A.角括弧<>會被轉換成HTML標記,因此字串將變長
B.沒有變化
C.在瀏覽器上列印該字串時,角括弧是可見的
D.在瀏覽器上列印該字串時,角括弧及其內容將被識別為HTML標籤,因此不可見
E.由於調用了htmlentities(),字串會被銷毀
BD,解釋:htmlspecialchars轉義$s後賦值給$ss,輸出的是$ss








相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.