某大公司的PHP面試題
創(chuàng)新互聯(lián)專業(yè)提供成都主機托管四川主機托管成都服務(wù)器托管四川服務(wù)器托管,支持按月付款!我們的承諾:貴族品質(zhì)、平民價格,機房位于中國電信/網(wǎng)通/移動機房,四川電信科技城機房服務(wù)有保障!
管理提醒: 本帖被 haowubai 執(zhí)行取消置頂操作(2009-07-30)
1. 如何用php的環(huán)境變量得到一個網(wǎng)頁地址的內(nèi)容?ip地址又要怎樣得到?
[php]
echo $_SERVER ['PHP_SELF'];
echo $_SERVER ['SERVER_ADDR'];
[/php]
2. 求兩個日期的差數(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. 請寫一個函數(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. 要求寫一段程序,實現(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. 請簡述數(shù)據(jù)庫設(shè)計的范式及應(yīng)用。
一般第3范式就足以,用于表結(jié)構(gòu)的優(yōu)化,這樣做既可以避免應(yīng)用程序過于復雜同時也避免了SQL語句過于龐大所造成系統(tǒng)效率低下。
ANSWER:
第一范式:若關(guān)系模式R的每一個屬性是不可再分解的,再屬于第一范式。
第二范式:若R屬于第一范式,且所有的非碼屬性都完全函數(shù)依賴于碼屬性,則為第二范式。
第三范式:若R屬于第二范式,且所有的非碼屬性沒有一個是傳遞函數(shù)依賴于候選碼,則屬于第三范式。
6.一個表中的Id有多個記錄,把所有這個id的記錄查出來,并顯示共有多少條記錄數(shù),用SQL語句及視圖、存儲過程分別實現(xiàn)。
存儲過程:
[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語句實現(xiàn):當A列大于B列時選擇A列否則選擇B列,當B列大于C列時選擇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請簡述項目中優(yōu)化sql語句執(zhí)行效率的方法,從哪些方面,sql語句性能如何分析?
ANSWER: sql優(yōu)化有鳥用,不如直接加索引。
9 如果模板是用smarty模板。怎樣用section語句來顯示一個名為$data的數(shù)組。比如:
[php]$data = array(
[0] = array( [id]=8 [name]=’name1′)
[1] = array( [id]=10 [name]=’name2′)
[2] = array( [id]=15 [name]=’name3′)
……
)[/php]
寫出在模板頁的代碼? 若用foreach語句又要怎樣顯示呢?
占無答案.
10 寫一個函數(shù),能夠遍歷一個文件夾下的所有文件和子文件夾。(目錄操作)
[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 長沙 2
5 武漢 3
………. 廣州
province:
id Province
1 廣東
2 湖南
3 湖北
……….
(1) 寫一條sql語句關(guān)系兩個表,實現(xiàn):顯示城市的基本信息。?
(2) 顯示字段:城市id ,城市名, 所屬省份 。
如:
Id(城市id) Cityname(城市名) Privence(所屬省份)
。。。。。。。。。
。。。。。。。。。
(2)如果要統(tǒng)計每個省份有多少個城市,請用group by 查詢出來。?
顯示字段:省份id ,省份名,包含多少個城市。
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)驗請簡述軟件工程進行軟件開發(fā)的步驟。以下工具Rational Rose、PowerDesigner、Project、VSS或CVS、TestDirector使用過那種,有缺點是什么?
公司用dbdesigner及cvs,測試管理工具用的是Mantis
13. 請簡述操作系統(tǒng)的線程與進程的區(qū)別。列舉LINUX下面你使用過的軟件?
14. 請使用偽語言結(jié)合數(shù)據(jù)結(jié)構(gòu)冒泡排序法對以下一組數(shù)據(jù)進行排序 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]
通過sysbench的oltp_read_write測試來模擬業(yè)務(wù)壓力、以此來給指定的硬件環(huán)境配置一份比較合理的MySQL配置文件。
環(huán)境介紹
硬件配置
請點擊輸入圖片描述
軟件環(huán)境
請點擊輸入圖片描述
優(yōu)化層級與指導思想
優(yōu)化層級
MySQL數(shù)據(jù)庫優(yōu)化可以在多個不同的層級進行,常見的有:
SQL優(yōu)化
參數(shù)優(yōu)化
架構(gòu)優(yōu)化
本文重點關(guān)注:參數(shù)優(yōu)化
指導思想
日志先行 -- 一個事務(wù)能否成功提交的關(guān)鍵是日志是否成功落盤,與數(shù)據(jù)沒有太大的關(guān)系;也就是說對寫的優(yōu)化可以表述為各方面的資源向?qū)懖僮鲀A斜。
瓶頸分析 -- 通過show global status 的各個計數(shù)器的值基本上就能分析出當前瓶頸所在,再結(jié)合一些簡單的系統(tǒng)層面的監(jiān)控工具如top iostat 就能明確瓶頸。
整體性能是“讀”“寫”之間的再平衡。
這方面網(wǎng)上有比較多的,針對3-5年的PHPer常見的面試題,參考如下:
1、平時喜歡哪些php書籍及博客?CSDN、虎嗅、獵云
2、js閉包是什么?
3、for與foreach哪個更快?
4、php鳥哥是誰?能不能講一下php執(zhí)行原理?
5、php加速器有哪些?apc、zend、xcache.....能不能講一下它的加速原理?
6、Node.js能徹底代替php+apache是扯淡。
7、怎樣判斷一個值是否存在于數(shù)組中?in_array(),array_key_exists,......
8、怎樣判斷select語句中是否使用了索引?explain
9、sphinx的中文分詞詞庫使用第三方庫還是自己建庫?
10、如果一個被面試者經(jīng)驗少、基礎(chǔ)差,此時卻問些高深的知識。要懷疑它的穩(wěn)定性,可以提問加班對他會不會有抵觸。
11、mysql與mysqli的區(qū)別有哪些?
12、將來的發(fā)展方向?安全、還是數(shù)據(jù)挖掘、大數(shù)據(jù)處理?
13、php的面向?qū)ο螅侯惖男揎椃?、封裝、繼承、多態(tài)體現(xiàn)方面
14、php 多態(tài)是什么?
15、Type Hinting:
16、php的設(shè)計模式:單例模式、工廠模式、生產(chǎn)者模式......等23種
17、服務(wù)器狀態(tài)碼:200、202、301、404、500......
18、i++與++i的區(qū)別?
19、項目開發(fā):電商項目中的購物車數(shù)據(jù)持久化、考試系統(tǒng)的安全性考慮、
20、mysql設(shè)計基礎(chǔ):三大范式、功能-思維導圖、創(chuàng)建表的第一字段是什么?
21、mysql字段char、varchar、int、smallint、tinyint、mediumint、bigint、decimal、double、float字節(jié)數(shù)及應(yīng)用場景。
22、memcache與mongoDB、Redis各自的使用場景是什么?
23、為什么mongoDB與Redis非但沒有形成競爭反而是互補關(guān)系?
24、Redis數(shù)據(jù)類型有哪些?int、string、hash、set、list ?
25、安裝linux軟件時使用make方式還使用yum方式?
26、linux網(wǎng)絡(luò)優(yōu)化:查看進程ps -aux|grep mysqld、怎樣查看最大文件打開數(shù)?
27、C語言中的虛函數(shù)是什么?
28、1條微薄要推送給100萬個粉絲該怎么處理?
29、知道哪些算法?冒泡排序?快速排序?二分查找法?
30、yii thinkphp ci 各自優(yōu)點
31、php 設(shè)計模式有哪些?
32、c 排序算法有哪些?
33、php 基本結(jié)構(gòu)是什么?
34、memcache magent 分布式設(shè)計?
35、redis 分布式設(shè)計,如何設(shè)計?
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)用 負載性能查看 ?
41、nginx 實戰(zhàn)優(yōu)化業(yè)務(wù)功能 ?
42、談一下近三年來你的得意之作?
43、看看簡歷,會問一些過去做的項目的用戶量、pv、吞吐量、相關(guān)難點和解決方法等
44、數(shù)據(jù)庫設(shè)計經(jīng)驗,為什么進行分表? 分庫?
45、一般多少數(shù)據(jù)量開始分表? 分庫? 分庫分表的目的? 什么是數(shù)據(jù)庫垂直拆分? 水平拆分? 分區(qū)等等?可以舉例說明
46、數(shù)據(jù)庫優(yōu)化有哪些? 分別需要注意什么?
47、web開發(fā)方面會遇到哪些緩存? 分別如何優(yōu)化?
48、給你256M的內(nèi)存,對10G的文件進行排序(文件每行1個數(shù)字),如何實現(xiàn)?
49、對10G的文件進行查找如何實現(xiàn)?
50、統(tǒng)計10G文件每個關(guān)鍵字出現(xiàn)的次數(shù)如何實現(xiàn)?
51、假如你現(xiàn)在是12306火車訂票的設(shè)計師,你該如何設(shè)計滿足全國人民訂票?
52、假如有1億用戶的訪問量,你的服務(wù)器架構(gòu)是怎樣的? 用戶信息的存儲方案如何設(shè)計?
53、如果你是技術(shù)組長,所帶團隊任務(wù)進度無法完成你該如何解決?
54、如果在進度排滿的前提下插入任務(wù),你該如何保證總進度不延期?
55、如果有的工程師今天預定任務(wù)沒有完成,你該如何解決?
56、從你的經(jīng)驗方面談一下如何構(gòu)建高性能web站點? 需要哪些環(huán)節(jié)? 步驟? 每個步驟需要注意什么如何優(yōu)化等?
57、為什么要對數(shù)據(jù)庫進行主從分離?
58、如何處理多服務(wù)器共享session?
59、一個10G的表,你用php程序統(tǒng)計某個字段出現(xiàn)的次數(shù),思路是?
60、會告訴你一個nginx日志例子,用你認為最佳的編程語言統(tǒng)計一下http響應(yīng)時間超過1秒的前10個url?
61、給你一個mysql配置文件,用你認為最佳的編程語言解析該文件?
62、給你兩個路徑a和b,寫一個算法或思路計算a和b差距幾層并顯示a和b的交集?
63、給你一個url,在nginx配置一下rewrite指定到某個具體路徑?
64、一個php文件的解釋過程是? 一般加速php有哪些? 提高php整體性能會用到哪些技術(shù)?
65、session和cookie生存周期區(qū)別? 存儲位置區(qū)別?
66、require、include、require_once、include_once區(qū)別? 加載區(qū)別? 如果程序按需加載某個php文件你如何實現(xiàn)?
67、chrome號稱為多線程的,所以多線程和多進程的區(qū)別為?
68、php在2011年底出現(xiàn)hash碰撞,hash碰撞原理為? 如何進行修復?
69、web不安全因素有哪些? 分別如何防范?
70、假如兩個單鏈表相交,寫一個最優(yōu)算法計算交點位置,說思路也可以?
71、假如你是技術(shù)組長? 如何提高團隊效率?
72、nginx負載均衡有哪些? 如果其中一臺服務(wù)器掛掉,報警機制如何實現(xiàn)?
73、不優(yōu)化前提下,apache一般最大連接數(shù)為? nginx一般最大連接數(shù)為? mysql 每秒insert ? select ? update ? delete?
74、mysql 數(shù)據(jù)類型有哪些 ? 分別占用多少存儲空間 ?
75、nginx設(shè)置緩存js、css、圖片等信息,緩存的實現(xiàn)原理是?
76、如何提高緩存命中率? 如何對緩存進行顆粒化?
77、php的內(nèi)存回收機制是?
78、我的所有問題都問完了(當然沒有這么多),你有什么問題問我沒有?
本文標題:php面試題優(yōu)化數(shù)據(jù)庫 php面試題數(shù)據(jù)庫優(yōu)化方法
本文來源:http://www.sd-ha.com/article32/dohjcpc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、面包屑導航、做網(wǎng)站、關(guān)鍵詞優(yōu)化、商城網(wǎng)站、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)