php面試題優(yōu)化數(shù)據(jù)庫(kù) php面試題數(shù)據(jù)庫(kù)優(yōu)化方法

PHP程序員上機(jī)面試題(并附答案,回答好的加分)

某大公司的PHP面試題

創(chuàng)新互聯(lián)專業(yè)提供成都主機(jī)托管四川主機(jī)托管成都服務(wù)器托管四川服務(wù)器托管,支持按月付款!我們的承諾:貴族品質(zhì)、平民價(jià)格,機(jī)房位于中國(guó)電信/網(wǎng)通/移動(dòng)機(jī)房,四川電信科技城機(jī)房服務(wù)有保障!

管理提醒: 本帖被 haowubai 執(zhí)行取消置頂操作(2009-07-30)

1. 如何用php的環(huán)境變量得到一個(gè)網(wǎng)頁(yè)地址的內(nèi)容?ip地址又要怎樣得到?

[php]

echo $_SERVER ['PHP_SELF'];

echo $_SERVER ['SERVER_ADDR'];

[/php]

2. 求兩個(gè)日期的差數(shù),例如2007-2-5 ~ 2007-3-6 的日期差數(shù)

[php]

$begin=strtotime('2007-2-5');

$end=strtotime('2007-3-6');

echo ($end-$begin)/(24*3600);

[/php]

3. 請(qǐng)寫一個(gè)函數(shù),實(shí)現(xiàn)以下功能:

字符串“open_door” 轉(zhuǎn)換成 “OpenDoor”、”make_by_id” 轉(zhuǎn)換成 ”MakeById”。

[php]

function changeStyle( $str) {

/*$str = str_replace ( "_", " ", $str );

$str = ucwords ( $str );

$str = str_replace ( " ", "", $str );

return $str;*/

$arrStr=explode('_',$str);

foreach($arrStr as $key=$value){

$arrStr[$key]=strtoupper(substr($value,0,1)).substr($value,1);

}

return implode('',$arrStr);

}

$s = "open_door";

echo changeStyle ( $s );

[/php]

4. 要求寫一段程序,實(shí)現(xiàn)以下數(shù)組$arr1轉(zhuǎn)換成數(shù)組$arr2:

[php]$arr1 = array (

'0' = array ('fid' = 1, 'tid' = 1, 'name' ='Name1' ),

'1' = array ('fid' = 1, 'tid' = 2 , 'name' ='Name2' ),

'2' = array ('fid' = 1, 'tid' = 5 , 'name' ='Name3' ),

'3' = array ('fid' = 1, 'tid' = 7 , 'name' ='Name4' ),

'4' = array ('fid' = 3, 'tid' = 9, 'name' ='Name5' )

);

$arr2 = array (

'0' = array (

'0' = array ( 'tid' = 1, 'name' = 'Name1'),

'1' = array ( 'tid' = 2, 'name' = 'Name2'),

'2' = array ( 'tid' = 5, 'name' = 'Name3'),

'3' = array ( 'tid' = 7, 'name' = 'Name4')

),

'1' = array (

'0' = array ( 'tid' = 9, 'name' = 'Name5' )

)

);

?php

$arr1 = array (

'0' = array ('fid' = 1, 'tid' = 1, 'name' ='Name1' ),

'1' = array ('fid' = 1, 'tid' = 2 , 'name' ='Name2' ),

'2' = array ('fid' = 1, 'tid' = 5 , 'name' ='Name3' ),

'3' = array ('fid' = 1, 'tid' = 7 , 'name' ='Name4' ),

'4' = array ('fid' = 3, 'tid' = 9, 'name' ='Name5' )

);

function changeArrayStyle($arr){

foreach($arr as $key=$value){

$result[$value['fid']][]=$value;

}

return array_values($result);

}

$arr2=changeArrayStyle($arr1);

echo "pre";

var_dump($arr2);

[/php]

5. 請(qǐng)簡(jiǎn)述數(shù)據(jù)庫(kù)設(shè)計(jì)的范式及應(yīng)用。

一般第3范式就足以,用于表結(jié)構(gòu)的優(yōu)化,這樣做既可以避免應(yīng)用程序過(guò)于復(fù)雜同時(shí)也避免了SQL語(yǔ)句過(guò)于龐大所造成系統(tǒng)效率低下。

ANSWER:

第一范式:若關(guān)系模式R的每一個(gè)屬性是不可再分解的,再屬于第一范式。

第二范式:若R屬于第一范式,且所有的非碼屬性都完全函數(shù)依賴于碼屬性,則為第二范式。

第三范式:若R屬于第二范式,且所有的非碼屬性沒(méi)有一個(gè)是傳遞函數(shù)依賴于候選碼,則屬于第三范式。

6.一個(gè)表中的Id有多個(gè)記錄,把所有這個(gè)id的記錄查出來(lái),并顯示共有多少條記錄數(shù),用SQL語(yǔ)句及視圖、存儲(chǔ)過(guò)程分別實(shí)現(xiàn)。

存儲(chǔ)過(guò)程:

[php]

DELIMITER //

create procedure proc_countNum(in columnId int,out rowsNo int)

begin

select count(*) into rowsNo from member where member_id=columnId;

end

call proc_countNum(1,@no);

select @no;

[/php]

視圖:

create view v_countNum as select member_id,count(*) as countNum from member group by member_id

select countNum from v_countNum where member_id=1

7 表中有A B C三列,用SQL語(yǔ)句實(shí)現(xiàn):當(dāng)A列大于B列時(shí)選擇A列否則選擇B列,當(dāng)B列大于C列時(shí)選擇B列否則選擇C列。

[php]select

case

when first_namemiddle_name then

case when first_namelast_name then first_name

else last_name end

else

case when middle_namelast_name then middle_name else last_name

end

end as name

from member

[/php]

8請(qǐng)簡(jiǎn)述項(xiàng)目中優(yōu)化sql語(yǔ)句執(zhí)行效率的方法,從哪些方面,sql語(yǔ)句性能如何分析?

ANSWER: sql優(yōu)化有鳥用,不如直接加索引。

9 如果模板是用smarty模板。怎樣用section語(yǔ)句來(lái)顯示一個(gè)名為$data的數(shù)組。比如:

[php]$data = array(

[0] = array( [id]=8 [name]=’name1′)

[1] = array( [id]=10 [name]=’name2′)

[2] = array( [id]=15 [name]=’name3′)

……

)[/php]

寫出在模板頁(yè)的代碼? 若用foreach語(yǔ)句又要怎樣顯示呢?

占無(wú)答案.

10 寫一個(gè)函數(shù),能夠遍歷一個(gè)文件夾下的所有文件和子文件夾。(目錄操作)

[php] ?php

$d = dir(dirname(__file__));

//echo "Handle: " . $d-handle . "\n";

//echo "Path: " . $d-path . "\n";

while ( false !== ($entry = $d-read ()) ) {

echo $entry . "br /";

}

$d-close ();

[/php]

11 兩張表 city表和province表。分別為城市與省份的關(guān)系表。

city:

id City Provinceid

1 廣州 1

2 深圳 1

3 惠州 1

4 長(zhǎng)沙 2

5 武漢 3

………. 廣州

province:

id Province

1 廣東

2 湖南

3 湖北

……….

(1) 寫一條sql語(yǔ)句關(guān)系兩個(gè)表,實(shí)現(xiàn):顯示城市的基本信息。?

(2) 顯示字段:城市id ,城市名, 所屬省份 。

如:

Id(城市id) Cityname(城市名) Privence(所屬省份)

。。。。。。。。。

。。。。。。。。。

(2)如果要統(tǒng)計(jì)每個(gè)省份有多少個(gè)城市,請(qǐng)用group by 查詢出來(lái)。?

顯示字段:省份id ,省份名,包含多少個(gè)城市。

ANSWER:

1.select A.id,A.Cityname,B.Province from city A,province B where A.provinceid=B.id

2.select B.id,B.Province,count(*) as num from city A,province B where A.provinceid=B.id group by B.id

12. 按照你的經(jīng)驗(yàn)請(qǐng)簡(jiǎn)述軟件工程進(jìn)行軟件開發(fā)的步驟。以下工具Rational Rose、PowerDesigner、Project、VSS或CVS、TestDirector使用過(guò)那種,有缺點(diǎn)是什么?

公司用dbdesigner及cvs,測(cè)試管理工具用的是Mantis

13. 請(qǐng)簡(jiǎn)述操作系統(tǒng)的線程與進(jìn)程的區(qū)別。列舉LINUX下面你使用過(guò)的軟件?

14. 請(qǐng)使用偽語(yǔ)言結(jié)合數(shù)據(jù)結(jié)構(gòu)冒泡排序法對(duì)以下一組數(shù)據(jù)進(jìn)行排序 10 2 36 14 10 25 23 85 99 45。

[php]function bubble_sort( $arr){

$number=count($arr);

for($i=0;$i$number-1;$i++){

for($j=0;$j$number-1-$i;$j++){

if($arr[$j]$arr[$j+1]){

$tmp=$arr[$j];

$arr[$j]=$arr[$j+1];

$arr[$j+1]=$tmp;

}

}

}

}

$str="10 2 36 14 10 25 23 85 99 45";

$arr=explode(" ",$str);

bubble_sort($arr);

echo "pre";

var_dump($arr);

[/php]

測(cè)試PHP性能和MYSQL數(shù)據(jù)庫(kù)性能的工具,和找出瓶頸的方法? PHP面試題

通過(guò)sysbench的oltp_read_write測(cè)試來(lái)模擬業(yè)務(wù)壓力、以此來(lái)給指定的硬件環(huán)境配置一份比較合理的MySQL配置文件。

環(huán)境介紹

硬件配置

請(qǐng)點(diǎn)擊輸入圖片描述

軟件環(huán)境

請(qǐng)點(diǎn)擊輸入圖片描述

優(yōu)化層級(jí)與指導(dǎo)思想

優(yōu)化層級(jí)

MySQL數(shù)據(jù)庫(kù)優(yōu)化可以在多個(gè)不同的層級(jí)進(jìn)行,常見的有:

SQL優(yōu)化

參數(shù)優(yōu)化

架構(gòu)優(yōu)化

本文重點(diǎn)關(guān)注:參數(shù)優(yōu)化

指導(dǎo)思想

日志先行 -- 一個(gè)事務(wù)能否成功提交的關(guān)鍵是日志是否成功落盤,與數(shù)據(jù)沒(méi)有太大的關(guān)系;也就是說(shuō)對(duì)寫的優(yōu)化可以表述為各方面的資源向?qū)懖僮鲀A斜。

瓶頸分析 -- 通過(guò)show global status 的各個(gè)計(jì)數(shù)器的值基本上就能分析出當(dāng)前瓶頸所在,再結(jié)合一些簡(jiǎn)單的系統(tǒng)層面的監(jiān)控工具如top iostat 就能明確瓶頸。

整體性能是“讀”“寫”之間的再平衡。

誰(shuí)有面試phper的經(jīng)驗(yàn)

這方面網(wǎng)上有比較多的,針對(duì)3-5年的PHPer常見的面試題,參考如下:

1、平時(shí)喜歡哪些php書籍及博客?CSDN、虎嗅、獵云

2、js閉包是什么?

3、for與foreach哪個(gè)更快?

4、php鳥哥是誰(shuí)?能不能講一下php執(zhí)行原理?

5、php加速器有哪些?apc、zend、xcache.....能不能講一下它的加速原理?

6、Node.js能徹底代替php+apache是扯淡。

7、怎樣判斷一個(gè)值是否存在于數(shù)組中?in_array(),array_key_exists,......

8、怎樣判斷select語(yǔ)句中是否使用了索引?explain

9、sphinx的中文分詞詞庫(kù)使用第三方庫(kù)還是自己建庫(kù)?

10、如果一個(gè)被面試者經(jīng)驗(yàn)少、基礎(chǔ)差,此時(shí)卻問(wèn)些高深的知識(shí)。要懷疑它的穩(wěn)定性,可以提問(wèn)加班對(duì)他會(huì)不會(huì)有抵觸。

11、mysql與mysqli的區(qū)別有哪些?

12、將來(lái)的發(fā)展方向?安全、還是數(shù)據(jù)挖掘、大數(shù)據(jù)處理?

13、php的面向?qū)ο螅侯惖男揎椃?、封裝、繼承、多態(tài)體現(xiàn)方面

14、php 多態(tài)是什么?

15、Type Hinting:

16、php的設(shè)計(jì)模式:?jiǎn)卫J?、工廠模式、生產(chǎn)者模式......等23種

17、服務(wù)器狀態(tài)碼:200、202、301、404、500......

18、i++與++i的區(qū)別?

19、項(xiàng)目開發(fā):電商項(xiàng)目中的購(gòu)物車數(shù)據(jù)持久化、考試系統(tǒng)的安全性考慮、

20、mysql設(shè)計(jì)基礎(chǔ):三大范式、功能-思維導(dǎo)圖、創(chuàng)建表的第一字段是什么?

21、mysql字段char、varchar、int、smallint、tinyint、mediumint、bigint、decimal、double、float字節(jié)數(shù)及應(yīng)用場(chǎng)景。

22、memcache與mongoDB、Redis各自的使用場(chǎng)景是什么?

23、為什么mongoDB與Redis非但沒(méi)有形成競(jìng)爭(zhēng)反而是互補(bǔ)關(guān)系?

24、Redis數(shù)據(jù)類型有哪些?int、string、hash、set、list ?

25、安裝linux軟件時(shí)使用make方式還使用yum方式?

26、linux網(wǎng)絡(luò)優(yōu)化:查看進(jìn)程ps -aux|grep mysqld、怎樣查看最大文件打開數(shù)?

27、C語(yǔ)言中的虛函數(shù)是什么?

28、1條微薄要推送給100萬(wàn)個(gè)粉絲該怎么處理?

29、知道哪些算法?冒泡排序?快速排序?二分查找法?

30、yii thinkphp ci 各自優(yōu)點(diǎn)

31、php 設(shè)計(jì)模式有哪些?

32、c 排序算法有哪些?

33、php 基本結(jié)構(gòu)是什么?

34、memcache magent 分布式設(shè)計(jì)?

35、redis 分布式設(shè)計(jì),如何設(shè)計(jì)?

36、mongo 集群架構(gòu)是怎樣的?

37、mysql 索引原理及sql性能優(yōu)化

38、tcp/ip 網(wǎng)絡(luò)協(xié)議,osi7層指是什么?

39、php 處理大數(shù)據(jù)業(yè)務(wù)

40、linux 應(yīng)用 負(fù)載性能查看 ?

41、nginx 實(shí)戰(zhàn)優(yōu)化業(yè)務(wù)功能 ?

42、談一下近三年來(lái)你的得意之作?

43、看看簡(jiǎn)歷,會(huì)問(wèn)一些過(guò)去做的項(xiàng)目的用戶量、pv、吞吐量、相關(guān)難點(diǎn)和解決方法等

44、數(shù)據(jù)庫(kù)設(shè)計(jì)經(jīng)驗(yàn),為什么進(jìn)行分表? 分庫(kù)?

45、一般多少數(shù)據(jù)量開始分表? 分庫(kù)? 分庫(kù)分表的目的? 什么是數(shù)據(jù)庫(kù)垂直拆分? 水平拆分? 分區(qū)等等?可以舉例說(shuō)明

46、數(shù)據(jù)庫(kù)優(yōu)化有哪些? 分別需要注意什么?

47、web開發(fā)方面會(huì)遇到哪些緩存? 分別如何優(yōu)化?

48、給你256M的內(nèi)存,對(duì)10G的文件進(jìn)行排序(文件每行1個(gè)數(shù)字),如何實(shí)現(xiàn)?

49、對(duì)10G的文件進(jìn)行查找如何實(shí)現(xiàn)?

50、統(tǒng)計(jì)10G文件每個(gè)關(guān)鍵字出現(xiàn)的次數(shù)如何實(shí)現(xiàn)?

51、假如你現(xiàn)在是12306火車訂票的設(shè)計(jì)師,你該如何設(shè)計(jì)滿足全國(guó)人民訂票?

52、假如有1億用戶的訪問(wèn)量,你的服務(wù)器架構(gòu)是怎樣的? 用戶信息的存儲(chǔ)方案如何設(shè)計(jì)?

53、如果你是技術(shù)組長(zhǎng),所帶團(tuán)隊(duì)任務(wù)進(jìn)度無(wú)法完成你該如何解決?

54、如果在進(jìn)度排滿的前提下插入任務(wù),你該如何保證總進(jìn)度不延期?

55、如果有的工程師今天預(yù)定任務(wù)沒(méi)有完成,你該如何解決?

56、從你的經(jīng)驗(yàn)方面談一下如何構(gòu)建高性能web站點(diǎn)? 需要哪些環(huán)節(jié)? 步驟? 每個(gè)步驟需要注意什么如何優(yōu)化等?

57、為什么要對(duì)數(shù)據(jù)庫(kù)進(jìn)行主從分離?

58、如何處理多服務(wù)器共享session?

59、一個(gè)10G的表,你用php程序統(tǒng)計(jì)某個(gè)字段出現(xiàn)的次數(shù),思路是?

60、會(huì)告訴你一個(gè)nginx日志例子,用你認(rèn)為最佳的編程語(yǔ)言統(tǒng)計(jì)一下http響應(yīng)時(shí)間超過(guò)1秒的前10個(gè)url?

61、給你一個(gè)mysql配置文件,用你認(rèn)為最佳的編程語(yǔ)言解析該文件?

62、給你兩個(gè)路徑a和b,寫一個(gè)算法或思路計(jì)算a和b差距幾層并顯示a和b的交集?

63、給你一個(gè)url,在nginx配置一下rewrite指定到某個(gè)具體路徑?

64、一個(gè)php文件的解釋過(guò)程是? 一般加速php有哪些? 提高php整體性能會(huì)用到哪些技術(shù)?

65、session和cookie生存周期區(qū)別? 存儲(chǔ)位置區(qū)別?

66、require、include、require_once、include_once區(qū)別? 加載區(qū)別? 如果程序按需加載某個(gè)php文件你如何實(shí)現(xiàn)?

67、chrome號(hào)稱為多線程的,所以多線程和多進(jìn)程的區(qū)別為?

68、php在2011年底出現(xiàn)hash碰撞,hash碰撞原理為? 如何進(jìn)行修復(fù)?

69、web不安全因素有哪些? 分別如何防范?

70、假如兩個(gè)單鏈表相交,寫一個(gè)最優(yōu)算法計(jì)算交點(diǎn)位置,說(shuō)思路也可以?

71、假如你是技術(shù)組長(zhǎng)? 如何提高團(tuán)隊(duì)效率?

72、nginx負(fù)載均衡有哪些? 如果其中一臺(tái)服務(wù)器掛掉,報(bào)警機(jī)制如何實(shí)現(xiàn)?

73、不優(yōu)化前提下,apache一般最大連接數(shù)為? nginx一般最大連接數(shù)為? mysql 每秒insert ? select ? update ? delete?

74、mysql 數(shù)據(jù)類型有哪些 ? 分別占用多少存儲(chǔ)空間 ?

75、nginx設(shè)置緩存js、css、圖片等信息,緩存的實(shí)現(xiàn)原理是?

76、如何提高緩存命中率? 如何對(duì)緩存進(jìn)行顆?;?

77、php的內(nèi)存回收機(jī)制是?

78、我的所有問(wèn)題都問(wèn)完了(當(dāng)然沒(méi)有這么多),你有什么問(wèn)題問(wèn)我沒(méi)有?

本文標(biāo)題:php面試題優(yōu)化數(shù)據(jù)庫(kù) php面試題數(shù)據(jù)庫(kù)優(yōu)化方法
本文來(lái)源:http://bm7419.com/article32/dohjcpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)面包屑導(dǎo)航、做網(wǎng)站、關(guān)鍵詞優(yōu)化、商城網(wǎng)站、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名