精品国产一级毛片大全,毛片一级在线,毛片免费观看的视频在线,午夜毛片福利

我要投稿 投訴建議

百度php面試題

時(shí)間:2021-02-10 14:58:56 面試試題 我要投稿

百度php面試題

  百度php面試題【1】

  1、PHP的整型溢出問題是怎樣的

百度php面試題

  2、如何理解OOP

  3、你對(duì)于設(shè)計(jì)模式和MVC的理解

  4、HTTP協(xié)議1.0及1.1的區(qū)別,并簡(jiǎn)單說下HTTP協(xié)議

  5、簡(jiǎn)單說下Apache中rewrite機(jī)制和PHP框架中URI路由機(jī)制

  6、MySQL的索引機(jī)制,復(fù)合索引的使用原則

  7、MySQL的表類型及MyISAM與InnoDB的區(qū)別

  8、簡(jiǎn)單說下快速排序算法

  9、awk、sed、sort的基本使用(用實(shí)例考察的)

  10、Memcached、redis的使用和理解

  ================================================

  PHP的整型溢出問題是怎樣的

  PHP的整型數(shù)的字長(zhǎng)和平臺(tái)有關(guān),對(duì)于32位的操作系統(tǒng),最大的整型是有二十多億,其實(shí)就是2的31次方,最小為-2的31次方,PHP不支持無符號(hào)的整數(shù)。 如果一個(gè)數(shù)超出了integer范圍,將會(huì)被自動(dòng)解釋為float。如果執(zhí)行的運(yùn)算結(jié)果超出了 integer 范圍,也會(huì)返回 float。(那在java、C中的整型整型溢出會(huì)怎樣)

  如何理解OOP

  OOP,面向?qū)ο缶幊,包括三個(gè)方面,繼承性、封裝性、多態(tài)性,其中最根本的東西就是抽象。

  繼承性,即擴(kuò)展性,通過子類對(duì)已經(jīng)存在的父類進(jìn)行功能擴(kuò)展。

  封裝性,要求外部不能隨意存取對(duì)象的內(nèi)部數(shù)據(jù),即對(duì)該類中的具體實(shí)現(xiàn)做封裝,用戶不必知道內(nèi)部的具體實(shí)現(xiàn),只有知道它是干什么的,怎么用就好了。

  多態(tài)性,就是類的抽象和接口,同一個(gè)類能夠處理多種類型對(duì)象的能力。

  我們?cè)诂F(xiàn)實(shí)中,看到的任何東東都可以看做為一個(gè)對(duì)象,然后通過進(jìn)一步的抽象為類,類又可以演變?yōu)楹芏囝愃频膶?duì)象。舉個(gè)簡(jiǎn)單的例子,將我們看到的一個(gè)房子抽象為一個(gè)ROOM類,包括基本的門,窗,桌子等物件,人可以進(jìn)出等功能。 現(xiàn)在我們繼承ROOM類為Classroom,包括扇門,有大窗,有桌椅,另外只包括一個(gè)黑白和一個(gè)講臺(tái),老師和同學(xué)可以上課,F(xiàn)在我們實(shí)例化這個(gè)Classroom類為Classroom_621對(duì)象,包括兩扇門,四扇大窗,30套桌椅,有同學(xué)正在上毛概課。

  你對(duì)于設(shè)計(jì)模式和MVC的理解

  Model-View-Controller,模型、視圖、控制器,一想到MVC就會(huì)想到JAVA,因?yàn)镴AVA是一個(gè)完全面向?qū)ο蟮恼Z言,MVC最早出現(xiàn)在smalltalk中,其核心就是要將試圖和數(shù)據(jù)模型分離,這樣不同的程序就可以有不同的展示。

  模型,即程序員寫的功能、算法和數(shù)據(jù)模型,也就是我們說的系統(tǒng)業(yè)務(wù)邏輯層。

  試圖,即前端,圖形界面。展示給用戶看的。

  控制器,主要負(fù)責(zé)對(duì)請(qǐng)求處理和轉(zhuǎn)發(fā)。

  設(shè)計(jì)模式,其實(shí)就是代碼的設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)和歸類,設(shè)計(jì)模式最早應(yīng)用與建筑行業(yè),編程的設(shè)計(jì)模式按最早的GoF所述,包括23種設(shè)計(jì)模式,主要用于面向?qū)ο蟮某绦蚓幊獭W裱瓗讉(gè)設(shè)計(jì)原則:開閉原則、單一職責(zé)原則、里氏替換原則、依賴注入、接口分離、迪米特原則、優(yōu)先使用組合而不是繼承等等。包括創(chuàng)建型模式、結(jié)構(gòu)性模式、行為模式三類。

  HTTP協(xié)議1.0及1.1的區(qū)別,并簡(jiǎn)單說下HTTP協(xié)議

  HTTP,超文本傳輸協(xié)議。它定義了瀏覽器和服務(wù)器的通信規(guī)則。HTTP協(xié)議是基于TCP/IP的TCP協(xié)議上,現(xiàn)在萬維網(wǎng)使用的是HTTP1.1版本,其特點(diǎn)包括,C/S模式,請(qǐng)求簡(jiǎn)單(GET/POST/HEAD),靈活(可以傳輸任何類型的數(shù)據(jù)HTML、XML、JSON、自定義等),無連接(每次連接只處理一個(gè)請(qǐng)求,從發(fā)出請(qǐng)求到收到200狀態(tài)為止斷開連接),無狀態(tài)。

  HTTP協(xié)議主要包括,響應(yīng)消息格式、請(qǐng)求消息格式、狀態(tài)碼知識(shí)點(diǎn)。

  [響應(yīng)消息格式]

  HTTP/1.1 200 0K

  Connectlon:close

  Date: Thu, 13 Oct 2005 03:17:33 GMT

  Server: Apache/2.0.54 (Unix)

  Last—Nodified:Mon,22 Jun 1998 09;23;24 GMT

  Content—Length:682l

  Content—Type:text/html

  這個(gè)響應(yīng)消息分為3部分:1個(gè)起始的狀態(tài)行(status line),6個(gè)頭部行、1個(gè)包含所請(qǐng)求對(duì)象本身的附屬體。狀態(tài)行有3個(gè)字段:協(xié)議版本字段、狀態(tài)碼字段、原因短語字段。

  [請(qǐng)求消息格式]

  GET /somedir/page.html HTTP/1.1

  Host:

  Connection:close

  User-agent:Mozilla/4.0

  Accept-language:zh-cn

  (額外的回車符和換行符)

  該請(qǐng)求消息的第一行稱為請(qǐng)求行 (request line),后續(xù)各行都稱為頭部行(header)。請(qǐng)求行有3個(gè)字段:方法字段、URL字段、HTTP版本字段。

  [狀態(tài)碼]參見

  1xx 消息

  2xx 成功

  3xx 重定向

  4xx 請(qǐng)求錯(cuò)誤

  5xx 服務(wù)器錯(cuò)誤

  200 OK。請(qǐng)求已成功,請(qǐng)求所希望的響應(yīng)頭或數(shù)據(jù)體將隨此響應(yīng)返回。

  301 Moved Permanently。表示請(qǐng)求的網(wǎng)頁已永久轉(zhuǎn)移到新位置

  302 Found。表示頁面在做臨時(shí)跳轉(zhuǎn)時(shí)返回的狀態(tài)。

  303 Not Modified?蛻舻木彺尜Y源是最新的, 要客戶端使用緩存。

  403 Forbidden。請(qǐng)求被服務(wù)器拒絕了。

  404 Not Found。表示服務(wù)器找不到請(qǐng)求的網(wǎng)頁,服務(wù)器上不存在的網(wǎng)頁經(jīng)常會(huì)返回的HTTP狀態(tài)碼。

  500 Internal Server Error。

  503 Service Unavailable。服務(wù)器目前無法為請(qǐng)求提供服務(wù),但過一段時(shí)間就可以恢復(fù)服務(wù)。

  504 Gateway Timeout。與狀態(tài)嗎408類似, 但是響應(yīng)來自網(wǎng)關(guān)或代理,此網(wǎng)關(guān)或代理在等待另一臺(tái)服務(wù)器的響應(yīng)時(shí)出現(xiàn)了超時(shí)。

  簡(jiǎn)單說下Apache中rewrite機(jī)制和PHP框架中URI路由機(jī)制

  1)URL重寫,其實(shí)就是把用戶通過瀏覽器請(qǐng)求的URL,到了后臺(tái),apache根據(jù)預(yù)先配置的重寫規(guī)則將該請(qǐng)求指向真正的資源路徑,說白了就是打馬虎眼,把真正的路徑改頭換面后給用戶訪問,可問題是這樣做有啥用處。

  1、SEO方面。將動(dòng)態(tài)的URL靜態(tài)化,以滿足搜索引擎的胃口。

  2、訪問控制。比如,通過重寫規(guī)則后,客戶端不易判斷后臺(tái)程序類型等。

  3、URL重定向。當(dāng)網(wǎng)站更改域名或增加別名URL后,可以通過規(guī)則輕松的指向要訪問的URL。

  mod_rewrite 使用基于正則表達(dá)式動(dòng)態(tài)的修改傳入請(qǐng)求的URL。它可以將URL映射到文件系統(tǒng)路徑,也可以將一個(gè)URL映射到另一個(gè)URL。它使用了沒有限制數(shù)量的規(guī)則來操縱URL,每條規(guī)則可以包括沒有限制數(shù)量的附加條件。你可以通過多種方式來檢測(cè),如,服務(wù)器變量、環(huán)境變量、HTTP頭、時(shí)間戳等。

  mod_rewrite 操作整個(gè)URL路徑,包括path-info的部分。一個(gè)重寫規(guī)則可以被設(shè)置在http.conf或者.htaccess中。一個(gè)重寫規(guī)則生成的路徑可以包括一個(gè)請(qǐng)求字符串,或者內(nèi)部的子程序處理,外部請(qǐng)求的重定向,或者穿透內(nèi)部代理等。

  2)PHP框架中的URI路由機(jī)制,與apache重寫類似,一般包括通配符和正則兩種規(guī)則。讓用戶可以重新定向(remap)URI處理程序. 設(shè)定你自己的路由規(guī)則。

  MySQL的索引機(jī)制,復(fù)合索引的使用原則

  (深入淺出MySQL一書中對(duì)索引的使用講的比較細(xì)致)

  一般都會(huì)用書本中的目錄來介紹索引機(jī)制,其實(shí)有些書本會(huì)有專門的快速檢索附錄,就很類似于數(shù)據(jù)庫的索引。

  MySQL的索引包括4類:主鍵索引(primary key)、唯一索引(unique)、常規(guī)索引(index)、全文索引(fullindex)。 Show index from table_name; --查看表中的索引

  Show status like 'Handler_read%' --查看索引的使用情況

  復(fù)合索引,一般遵循最左前綴原則,如table_a 的 a b c 三列建復(fù)合索引

  create index ind_table_a on table_a(a,b,c);

  那么,只有在條件中用到a,或者a、b,或者a、b、c這樣的情況下,才會(huì)用到剛建的復(fù)合索引。

  MySQL的表類型及MyISAM與InnoDB的區(qū)別

  MySQL常見的表類型(即存儲(chǔ)引擎)show engines包 括:MyISAM/Innodb/Memory/Merge/NDB

  其中,MyISAM和Innodb是最常用的兩個(gè)表類型,各有優(yōu)勢(shì),我們可以根據(jù)需求情況選擇適合自己的表類型。

  [MyISAM]

  1)每個(gè)數(shù)據(jù)庫存儲(chǔ)包括3個(gè)文件:.frm(表定義)、MYD(數(shù)據(jù)文件)、MYI(索引文件)

  2)數(shù)據(jù)文件或索引文件可以指向多個(gè)磁盤

  3)Linux的默認(rèn)引擎,win默認(rèn)InnoDB

  4)面向非事務(wù)類型,避免事務(wù)型額外的開銷

  5)適用于select、insert密集的表

  6)MyISAM默認(rèn)鎖的調(diào)度機(jī)制是寫優(yōu)先,可以通過LOW_PRIORITY_UPDATES設(shè)置

  7)MyISAM類型的數(shù)據(jù)文件可以在不同操作系統(tǒng)中COPY,這點(diǎn)很重要,布署的時(shí)候方便點(diǎn)。

  [Innodb]

  1)用于事務(wù)應(yīng)用程序

  2)適用于update、delete密集的操作。執(zhí)行select count(*) from table時(shí),InnoDB要掃描一遍整個(gè)表來計(jì)算有多少行,但是MyISAM只要簡(jiǎn)單的讀出保存好的行數(shù)即可。注意的是,當(dāng)count(*)語句包含 where條件時(shí),兩種表的操作是一樣的。DELETE FROM table時(shí),InnoDB不會(huì)重新建立表,而是一行一行的刪除。

  3)引入行級(jí)鎖和外鍵的約束

  4)InnoDB不支持FULLTEXT類型的索引

  簡(jiǎn)單說下快速排序算法

  基本思想:通過一趟排序?qū)⒋判蛄蟹指畛蓛刹糠,其中一部分比另一部分記錄小,再分別對(duì)這兩部分繼續(xù)快速排序,以達(dá)到有序。

  算法實(shí)現(xiàn):設(shè)有兩個(gè)指針low和high,初值為low=1,high=n,設(shè)基準(zhǔn)值為key(通常選第一個(gè)),則首先從high位置開始向前搜索,找到第一個(gè)比key小的記錄與key交換,然后從low位置向后搜索,找到第一個(gè)比key大的記錄與基準(zhǔn)值交換,重復(fù)直至low=high為止。

  第一趟排序結(jié)果,key之前的記錄值比key之后的記錄值小。

  11 25 9 3 16 2 //選擇11為key

  2 25 9 3 16 11

  2 11 9 3 16 25

  2 3 9 11 16 25

  awk、sed、sort的基本使用(用實(shí)例考察的)

  [例]:有如下文件test,請(qǐng)統(tǒng)計(jì)每個(gè)網(wǎng)址出現(xiàn)次數(shù),用一句shell實(shí)現(xiàn)。

  a 20:00

  b 19:30

  c 14:00

  d 23:00

  e 20:30

  f 20:30

  cat test| awk -F' ' '{print $2}' |sort -n |uniq -c

  Memcached、redis的`使用和理解

  Memcached和redis 都是一個(gè)key-value的內(nèi)存式存儲(chǔ)系統(tǒng),通過hash表來存儲(chǔ)檢索結(jié)果,做到強(qiáng)大的緩存機(jī)制。像新浪的微博、淘寶等大流量站點(diǎn)都必須的使用了這些東東。

  下面是從百科中摘錄的介紹。具體實(shí)踐和使用后續(xù)再詳細(xì)介紹。

  Memcache是一個(gè)高性能的分布式的內(nèi)存對(duì)象緩存系統(tǒng),通過在內(nèi)存里維護(hù)一個(gè)統(tǒng)一的巨大的hash表,它能夠用來存儲(chǔ)各種格式的數(shù)據(jù),包括圖像、視頻、文件以及數(shù)據(jù)庫檢索的結(jié)果等。簡(jiǎn)單的說就是將數(shù)據(jù)調(diào)用到內(nèi)存中,然后從內(nèi)存中讀取,從而大大提高讀取速度。

  redis是一個(gè)key-value存儲(chǔ)系統(tǒng)。和Memcached類似,它支持存儲(chǔ)的value類型相對(duì)更多,包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)。

  百度php面試題【2】

  題目: 見圖片, 該圖是某網(wǎng)頁的一個(gè)區(qū)域的截圖, 用于顯示商品或者其它信息的分類. 該分類的每一項(xiàng)可以折疊和收起(展開和收縮, 如果有子分類的話). 分類的級(jí)數(shù)不固定. 現(xiàn)有一個(gè)PHP變量:

  $cats = array( array( 'id' => 1, 'name' => '學(xué)術(shù)和教育', 'children' => array( array( 'id' => 2, 'name' => '自然科學(xué)', 'children' => null, ), // ... ), ), // ... );

  請(qǐng)寫一段PHP代碼, 將該數(shù)組所包含的分類數(shù)據(jù)生成一段能實(shí)現(xiàn)如圖片所示功能的HTML/JavaScript代碼, 可不考慮CSS樣式.

  ———-

  注解: 這道題目考察的范圍非常廣, 包括PHP, HTML, JavaScript, CSS, 遞歸, 只有真正掌握了如上幾種全部技能, 才能實(shí)現(xiàn)完整的功能, 否則必須依賴分工. 應(yīng)聘者所能實(shí)現(xiàn)的程度越大, 得分就越高.

  如果應(yīng)聘者的應(yīng)聘職位不包括HTML/JS/CSS, 那么題目可改為: 把上面的PHP數(shù)據(jù)用縮進(jìn)換行文本的形式保存到文件, 并讀取文件生成一個(gè)同樣的PHP數(shù)組.(自定義格式的序列化和反序列化)

  百度php面試題【3】

  1.PHP中isset() 與empty() 的區(qū)別,empty() 在什么情況下會(huì)返回 true?

  isset() 是檢測(cè)變量是否定義過,empty()是檢測(cè)變量是否為空. 下面是在php手冊(cè)中對(duì)這兩個(gè)函數(shù)定義及描述,

  當(dāng)時(shí)回答這個(gè)問題時(shí),沒有想到 對(duì)于0,"0",empty()返回的也是空,面試官很不滿意.....

  舉個(gè)小例子簡(jiǎn)單看一下isset()與empty()的區(qū)別吧,

  2.http協(xié)議GET和POST的區(qū)別?

  先簡(jiǎn)單說一下HTTP協(xié)議吧.(此段內(nèi)容引用自W3C)

  (1) 什么是HTTP?

  超文本傳輸協(xié)議(HTTP)的設(shè)計(jì)目的是保證客戶機(jī)與服務(wù)器之間的通信.

  HTTP 的工作方式是客戶機(jī)與服務(wù)器之間的請(qǐng)求-應(yīng)答協(xié)議.

  web 瀏覽器可能是客戶端,而計(jì)算機(jī)上的網(wǎng)絡(luò)應(yīng)用程序也可能作為服務(wù)器端。

  舉例:客戶端(瀏覽器)向服務(wù)器提交 HTTP 請(qǐng)求;服務(wù)器向客戶端返回響應(yīng)。響應(yīng)包含關(guān)于請(qǐng)求的狀態(tài)信息以及可能被請(qǐng)求 的內(nèi)容。

  (2) 兩種常用的HTTP請(qǐng)求方法,GET和POST

  GET - 從指定資源獲取數(shù)據(jù)

  POST - 向指定的資源提交要被處理的數(shù)據(jù)

  (3) GET與POST的區(qū)別

  3.字符串反轉(zhuǎn)

  給定字符串a(chǎn)bcdef,寫出反轉(zhuǎn)函數(shù),將字符串反轉(zhuǎn)為fedcba.

  [php] view plain copyfunction myStrReverse($str){

  $len = strlen($str);

  $result = '';

  for($i = $len - 1; $i >=0 ; $i-- ){

  $result .= $str[$i];

  }

  return $result;

  }

  4.多維數(shù)據(jù)$a1,$a2,$a1與$a2比較,得出$a1中的元素在$a2中的不同部分.

  [php] view plain copyfunction array_diff_deep($array1, $array2) {

  $ret = array();

  foreach ($array1 as $k => $v) {

  if (!isset($array2[$k])){

  $ret[$k] = $v;

  }elseif(is_array($v) && is_array($array2[$k])){

  $ret[$k] = array_diff_deep($v, $array2[$k]);

  }elseif($v !=$array2[$k]){

  $ret[$k] = $v;

  }else{

  unset($array1[$k]);

  }

  }

  return $ret;

  }

  5.求數(shù)組中最小的k個(gè)數(shù)

  [php] view plain copy

  /**

  * 獲取數(shù)組中最小的K個(gè)數(shù)

  */

  function replaceMaxValue($arr,$otherNum){

  $max = $arr[0];

  for($i = 1; $i < count($arr); $i++){

  if($arr[$i] > $max){

  $max = &$arr[$i];

  }

  }

  if($otherNum < $max){

  $max = $otherNum;

  }

  return $arr;

  }

  function getTop($arr, $topNum){

  $topK = array_slice($arr, 0, $topNum);

  $other = array_slice($arr,$topNum);

  foreach($other as $value){

  $topK = replaceMaxValue($topK,$value);

  }

  return $topK;

  }

  //print_r(getTop(array(1,2,5,6,7,976,0,4,123,4,5),6));

【百度php面試題】相關(guān)文章:

PHP面試題與答案10-25

2017基礎(chǔ)php面試題06-07

php常用面試題及答案06-19

常用php面試題及答案06-19

PHP的面試題集匯總推薦12-03

最新關(guān)于精選php面試題及答案08-07

面試指南-百度Java工程師面試題匯總05-15

優(yōu)秀php高級(jí)工程師面試題及答案06-19

百度面試經(jīng)驗(yàn)08-11

百度面試經(jīng)驗(yàn)分享01-21