PHP架構(gòu)師面試題目和答案_第1頁(yè)
PHP架構(gòu)師面試題目和答案_第2頁(yè)
PHP架構(gòu)師面試題目和答案_第3頁(yè)
PHP架構(gòu)師面試題目和答案_第4頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、一、 MySQL相關(guān)知識(shí)1、請(qǐng)列舉 mysql 優(yōu)化方式選取最適用的字段屬性、事務(wù)、鎖定表、使用外鍵、使用索引、優(yōu)化的查詢語(yǔ)句使用連接( JOIN )來(lái)代替子查詢(Sub-Queries)使用聯(lián)合 (UNION) 來(lái)代替手動(dòng)創(chuàng)建的臨時(shí)表2、請(qǐng)列舉分庫(kù)分表的常用方法有一個(gè) 1000 多萬(wàn)條記錄的用戶表members, 查詢起來(lái)非常之慢?phpfor($i=0;$i 100; $i+ )/echo CREATE TABLE db2.members$i LIKE db1.members; echo INSERT INTO members$i SELECT * FROM members WHERE m

2、id%100=$i;?3、 Mysql+ 如何做雙機(jī)熱備和負(fù)載均衡1.主服務(wù)器授權(quán)2.數(shù)據(jù)復(fù)制3.配置主服務(wù)器4.重啟 master5.配置 slave6.重啟 slave 7.查看 master的狀態(tài)與設(shè)置的是否一致8.查看 slave4、數(shù)據(jù)表類(lèi)型有哪些MyISAM 、 InnoDB 、 HEAP 、 BOB,ARCHIVE,CSV等MyISAM :成熟、穩(wěn)定、易于管理,快速讀取。一些功能不支持(事務(wù)等),表級(jí)鎖。InnoDB :支持事務(wù)、外鍵等特性、數(shù)據(jù)行鎖定??臻g占用大,不支持全文索引等。5、防 sql 注入的方法 ?mysql_escape_string(strip_tags($ar

3、r$val);6、 mysql 把一個(gè)大表拆分多個(gè)表后, 如何解決跨表查詢效率問(wèn)題php view plaincopy1. /*2. * 函數(shù)名稱: post_check()3. * 函數(shù)作用:對(duì)提交的編輯內(nèi)容進(jìn)行處理4. * 參數(shù): $post: 要提交的內(nèi)容5. * 返 回 值: $post: 返回過(guò)濾后的內(nèi)容6. */7. functionpost_check($post)8. if(!get_magic_quotes_gpc()/判斷 magic_quotes_gpc 是否為打開(kāi)9. $post=addslashes($post);/進(jìn)行 magic_quotes_gpc 沒(méi)有打開(kāi)的情

4、況對(duì)提交數(shù)據(jù)的過(guò)濾10.11.$post=str_replace(_,_,$post);/把_ 過(guò)濾掉12.$post=str_replace(%,%,$post);/把% 過(guò)濾掉13.$post=nl2br($post);/回車(chē)轉(zhuǎn)換14.$post=htmlspecialchars($post);/html 標(biāo)記轉(zhuǎn)換15.return$post;16.7、索引應(yīng)用7.1 什么情況下考慮索引7.2 什么情況不適合索引7.3 一個(gè)語(yǔ)句是否用到索引如何判斷8、 mysql 對(duì)于大表 ( 千萬(wàn)級(jí) ), 要怎么優(yōu)化第一優(yōu)化你的sql 和索引;第二加緩存,memcached,redis;第三以上都做了后

5、,還是慢,就做主從復(fù)制或主主復(fù)制,讀寫(xiě)分離,可以在應(yīng)用層做,效率高,也可以用三方工具, 第三方工具推薦360 的 atlas, 其它的要么效率不高,要么沒(méi)人維護(hù);第四如果以上都做了還是慢,不要想著去做切分,mysql 自帶分區(qū)表,先試試這個(gè),對(duì)你的應(yīng)用是透明的,無(wú)需更改代碼, 但是 sql 語(yǔ)句是需要針對(duì)分區(qū)表做優(yōu)化的,sql 條件中要帶上分區(qū)條件的列, 從而使查詢定位到少量的分區(qū)上,否則就會(huì)掃描全部分區(qū),另外分區(qū)表還有一些坑,在這里就不多說(shuō)了;第五如果以上都做了, 那就先做垂直拆分, 其實(shí)就是根據(jù)你模塊的耦合度,將一個(gè)大的系統(tǒng)分為多個(gè)小的系統(tǒng),也就是分布式系統(tǒng);第六才是水平切分, 針對(duì)數(shù)據(jù)量

6、大的表, 這一步最麻煩, 最能考驗(yàn)技術(shù)水平,要選擇一個(gè)合理的 sharding key, 為了有好的查詢效率,表結(jié)構(gòu)也要改動(dòng),做一定的冗余,應(yīng)用也要改, sql 中盡量帶 sharding key ,將數(shù)據(jù)定位到限定的表上去查,而不是掃描全部的表;mysql 數(shù)據(jù)庫(kù)一般都是按照這個(gè)步驟去演化的,成本也是由低到高;9、如何理解 mysql 的慢查詢其實(shí)通過(guò)慢查詢?nèi)罩緛?lái)分析是一種比較簡(jiǎn)單的方式,如果不想看日志, 可以借助工具來(lái)完成,如 mysqldumpslow, mysqlsla, myprofi, mysql-explain-slow-log, mysqllogfilter來(lái)分析一個(gè)需要豐富的

7、經(jīng)驗(yàn),一個(gè)浪費(fèi)時(shí)間。等,感覺(jué)自己10、關(guān)于用戶登錄狀態(tài)存session,cookie還是數(shù)據(jù)庫(kù)或者 memcache的優(yōu)劣11、事務(wù)應(yīng)用極端情況處理12、sql 語(yǔ)言分 4 大類(lèi)請(qǐng)列舉DDL-CREATE,DROP,ALTERDML-INSERT,UPDATE,DELETEDQL-SELECTDCL-GRANT,REVOKE,COMMIT,ROLLBACK二、 php 基礎(chǔ)? session 的跨域共享是什么,如何實(shí)現(xiàn)? php 連接 mysql 數(shù)據(jù)庫(kù)的幾種方式及區(qū)別mysql: 面向過(guò)程mysqli: 面向?qū)ο髉do: 可移植性高三、 php 高級(jí)? 長(zhǎng)連接和短連接的使用,區(qū)別是什么? s

8、ocket 的使用,簡(jiǎn)述過(guò)程? 支付安全問(wèn)題,如何保證? 面向?qū)ο蟮母拍? 三大特性:封裝、繼承、多態(tài)(方法重寫(xiě))。抽象類(lèi): abstract, 至少有一個(gè)方法是抽象方法,不能被實(shí)例化,為子類(lèi)定義公共接口。接口: interface, 解決 php 的單繼承問(wèn)題,所有方法都是 public 訪問(wèn)權(quán)限的抽象方法,不能聲明變量只能聲明常量。繼承一個(gè)類(lèi)的同時(shí)實(shí)現(xiàn)多個(gè)接口class Aextends B implements接口 1 ,接口 2. ,接口 n()/ 實(shí)現(xiàn)所有接口中的方法?lamp 和 lnmp網(wǎng)站架構(gòu)性能差異的原因分析? 解釋性語(yǔ)言和編譯性語(yǔ)言的性能分析,請(qǐng)舉例四、正則表達(dá)式:請(qǐng)用js

9、 實(shí)現(xiàn)正則表達(dá)式驗(yàn)證郵箱function check( email_address )var regex = /(0-9A-Za-z-_.+)(0-9a-z+.a-z2,3(.a-z2)?)$/g;if ( regex.test( email_address ) )var user_name = email_address.replace( regex, $1 );var domain_name = email_address.replace( regex, $2 );var alert_string = 您輸入的電子郵件地址合法nn;alert_string += 用戶名: + user_n

10、ame + n;alert_string += 域名: + domain_name;window.alert( alert_string );return true;elsewindow.alert( 您輸入的電子郵件地址不合法 );return false;五、開(kāi)發(fā)基礎(chǔ):簡(jiǎn)述進(jìn)程和線程定義,區(qū)別和聯(lián)系進(jìn)程的狀態(tài):運(yùn)行run 、就緒 ready 、等待 wait六、 Nosql 數(shù)據(jù)庫(kù):簡(jiǎn)述 memcached、redis 、 mongodb的區(qū)別聯(lián)系3 個(gè)場(chǎng)景完全不同的東西。 1.memcached:?jiǎn)我绘I值對(duì)內(nèi)存緩存的,做對(duì)象緩存無(wú)可替代的分布式緩存; 2.redis :是算法和數(shù)據(jù)結(jié)構(gòu)的

11、集合,快速的數(shù)據(jù)結(jié)構(gòu)操作是他最大的特點(diǎn),支持?jǐn)?shù)據(jù)持久化; 3.mongodb 是 bson 結(jié)構(gòu)、介于 rdb 和 nosql 之間的,更松散更靈活的,但是不支持事務(wù),只用作非重要數(shù)據(jù)存儲(chǔ)。七、常用 linux命令:如何建立軟鏈接八、架構(gòu)相關(guān)?項(xiàng)目上線前如何進(jìn)行壓力測(cè)試,單臺(tái)服務(wù)器支持的并發(fā)數(shù),pv 數(shù)? 服務(wù)器資源怎么分配合理CPU: ApacheMySQL處在高負(fù)載環(huán)境下,磁盤(pán) IO 讀寫(xiě)過(guò)多, 肯定會(huì)占用很多資源,必然會(huì) CPU占用過(guò)高。內(nèi)存:內(nèi)存庫(kù),數(shù)據(jù)庫(kù)軟件硬盤(pán):文件? web2.0 架構(gòu)選擇有?MongoDB+Redis 或者 MySQL+Memcached比較好的組合,邏輯簡(jiǎn)單的就用NOSQL?當(dāng)前流行主要網(wǎng)站架構(gòu)有?LAMP、 LNMP、

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論