某大公司的PHP面試題
成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)隆堯,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
管理提醒: 本帖被 haowubai 執(zhí)行取消置頂操作(2009-07-30)
1. 如何用php的環(huán)境變量得到一個(gè)網(wǎng)頁地址的內(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. 請寫一個(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. 請簡述數(shù)據(jù)庫設(shè)計(jì)的范式及應(yīng)用。
一般第3范式就足以,用于表結(jié)構(gòu)的優(yōu)化,這樣做既可以避免應(yīng)用程序過于復(fù)雜同時(shí)也避免了SQL語句過于龐大所造成系統(tǒng)效率低下。
ANSWER:
第一范式:若關(guān)系模式R的每一個(gè)屬性是不可再分解的,再屬于第一范式。
第二范式:若R屬于第一范式,且所有的非碼屬性都完全函數(shù)依賴于碼屬性,則為第二范式。
第三范式:若R屬于第二范式,且所有的非碼屬性沒有一個(gè)是傳遞函數(shù)依賴于候選碼,則屬于第三范式。
6.一個(gè)表中的Id有多個(gè)記錄,把所有這個(gè)id的記錄查出來,并顯示共有多少條記錄數(shù),用SQL語句及視圖、存儲過程分別實(shí)現(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語句實(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請簡述項(xiàng)目中優(yōu)化sql語句執(zhí)行效率的方法,從哪些方面,sql語句性能如何分析?
ANSWER: sql優(yōu)化有鳥用,不如直接加索引。
9 如果模板是用smarty模板。怎樣用section語句來顯示一個(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]
寫出在模板頁的代碼? 若用foreach語句又要怎樣顯示呢?
占無答案.
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 長沙 2
5 武漢 3
………. 廣州
province:
id Province
1 廣東
2 湖南
3 湖北
……….
(1) 寫一條sql語句關(guān)系兩個(gè)表,實(shí)現(xiàn):顯示城市的基本信息。?
(2) 顯示字段:城市id ,城市名, 所屬省份 。
如:
Id(城市id) Cityname(城市名) Privence(所屬省份)
。。。。。。。。。
。。。。。。。。。
(2)如果要統(tǒng)計(jì)每個(gè)省份有多少個(gè)城市,請用group by 查詢出來。?
顯示字段:省份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)請簡述軟件工程進(jìn)行軟件開發(fā)的步驟。以下工具Rational Rose、PowerDesigner、Project、VSS或CVS、TestDirector使用過那種,有缺點(diǎn)是什么?
公司用dbdesigner及cvs,測試管理工具用的是Mantis
13. 請簡述操作系統(tǒng)的線程與進(jìn)程的區(qū)別。列舉LINUX下面你使用過的軟件?
14. 請使用偽語言結(jié)合數(shù)據(jù)結(jié)構(gòu)冒泡排序法對以下一組數(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]
作為程序員,你認(rèn)為代碼只要實(shí)現(xiàn)功能就可以了嗎?
其實(shí),工作2~3年后,你會發(fā)現(xiàn)隨著工作的深入,工作中遇到的問題會變大,處理的數(shù)據(jù)量也會變大。
一開始,我可能會耐心加班,等機(jī)器處理好了再回家,但最后,處理完這些數(shù)據(jù)通常是在深夜。
面對這樣的問題,其實(shí)可以用數(shù)據(jù)結(jié)構(gòu)解決。 仔細(xì)整理開發(fā)中遇到的問題,會發(fā)現(xiàn)很多工作中的問題,用簡單的邏輯就能解決。
舉個(gè)例子,你很熟悉。 如何實(shí)時(shí)統(tǒng)計(jì)99%的業(yè)務(wù)接口響應(yīng)時(shí)間?
您可能會首先想到,每次查詢時(shí),都會按照從小到大的順序?qū)λ许憫?yīng)時(shí)間進(jìn)行排序。 如果總共有1200個(gè)數(shù)據(jù),第1188個(gè)數(shù)據(jù)將有99%的響應(yīng)時(shí)間。
很明顯,每次用這種方法查詢都要排序,效率非常低。
但是,如果知道“堆”數(shù)據(jù)結(jié)構(gòu),兩個(gè)堆就可以非常有效地解決這個(gè)問題。
因此,數(shù)據(jù)結(jié)構(gòu)是提高我們程序員工作效率的利器!
另外,已經(jīng)工作了2到3年的你,可能想跳槽進(jìn)入大工廠。
但是,當(dāng)你去面試時(shí),你經(jīng)常會碰到數(shù)據(jù)結(jié)構(gòu)和算法的主題。
目前,數(shù)據(jù)結(jié)構(gòu)和算法是許多知名企業(yè)面試的必考問題。
國內(nèi)外各大互聯(lián)網(wǎng)公司在面試過程中,都多少聽說了一些有關(guān)數(shù)據(jù)結(jié)構(gòu)和算法的主題。
而且,規(guī)模越大的公司,越重視數(shù)據(jù)結(jié)構(gòu)和算法。
例如,2019年6月,阿里面試中涉及的數(shù)據(jù)結(jié)構(gòu)主題:
2019年華為面試涉及的數(shù)據(jù)結(jié)構(gòu)主題:
目前,許多中小企業(yè)的面試問題都涉及數(shù)據(jù)結(jié)構(gòu)知識。
其實(shí),你會發(fā)現(xiàn),即使是大小公司,為了篩選更優(yōu)秀的人才,面試問題的難度也會越來越大。
因此,數(shù)據(jù)結(jié)構(gòu)是進(jìn)入大廠的重要門檻。
總之,如果你想提高工作效率,進(jìn)入更大的公司,數(shù)據(jù)結(jié)構(gòu)和算法是你必須跨越的一道坎。
從易傳傳媒、亞信、奧鵬教育、程序員到架構(gòu)師再到技術(shù)經(jīng)理樊延欣老師,前后六年通過各種工作方式打好數(shù)據(jù)結(jié)構(gòu)基礎(chǔ),在過程中梳理了許多心得,進(jìn)行了深入思考。
和樊延欣老師一起,死戰(zhàn)數(shù)據(jù)結(jié)構(gòu),跳過代碼陷阱,盡快完成數(shù)據(jù)結(jié)構(gòu)通關(guān),有機(jī)會升職更好。
掃描堆場上的二維碼,點(diǎn)擊組,立即搶購
原價(jià)69元,限時(shí)優(yōu)惠49元
老師怎么解釋這門課?#
老師介紹枯燥抽象的結(jié)構(gòu)規(guī)則用詳細(xì)的方法映射到實(shí)際項(xiàng)目中。 然后盡量脫離復(fù)雜的數(shù)學(xué)基礎(chǔ),在許多常見的應(yīng)用場合映射相關(guān)理論,降低學(xué)習(xí)者的理解門檻,使其零基礎(chǔ)也能學(xué)習(xí)。
同時(shí),該課程至少涵蓋了50%常見互聯(lián)網(wǎng)公司中數(shù)據(jù)結(jié)構(gòu)方面的面試問題綱領(lǐng),序列和棧是基礎(chǔ)性主題,樹是更高級的主題,可以理解和把握,發(fā)揮面試信心,更上一層樓
#課程介紹#
#我能得到什么? #
1、提高編程效率和質(zhì)量
熟悉數(shù)據(jù)結(jié)構(gòu)原理,復(fù)雜的項(xiàng)目無需為需求實(shí)現(xiàn)原理而煩惱。
2、優(yōu)化能力提升
隨著了解的加深,能夠發(fā)現(xiàn)與工作中數(shù)據(jù)結(jié)構(gòu)特性相違背的代碼,并具有優(yōu)化修改的能力。
3、提高面試成功率
學(xué)習(xí)50%以上互聯(lián)網(wǎng)公司數(shù)據(jù)結(jié)構(gòu)的面試問題綱領(lǐng),提高面試合格率。
#使用者群組#
1、開發(fā)業(yè)務(wù)系統(tǒng)2年,有相關(guān)項(xiàng)目經(jīng)驗(yàn),不斷重復(fù)制作業(yè)務(wù)車輪希望提高的程序員。
有2、3~5年開發(fā)經(jīng)驗(yàn),但基礎(chǔ)不牢固,想改變體系結(jié)構(gòu)的程序員。
3、基礎(chǔ)扎實(shí),需要大量用例和思考才能鞏固基礎(chǔ)的優(yōu)秀畢業(yè)生/在校生。
#新課初優(yōu)惠#
限時(shí)49元
(成本69 )。
每百人加價(jià)十元
第26節(jié)課,平均每課2元,持續(xù)一個(gè)月,改變報(bào)關(guān)大廠面試機(jī)會
享受七折的折扣
自考/成考有疑問、不知道自考/成考考點(diǎn)內(nèi)容、不清楚當(dāng)?shù)刈钥?成考政策,點(diǎn)擊底部咨詢官網(wǎng)老師,免費(fèi)領(lǐng)取復(fù)習(xí)資料:
PHP程序員在面試的時(shí)候一般應(yīng)該抓住以下幾個(gè)點(diǎn)。
一、應(yīng)該介紹自己掌握的開發(fā)一種,主要介紹PHP語言的獨(dú)特語法以及如何使用,比如PHP語言會比CGI更快的執(zhí)行動態(tài)頁面。
二、必須熟悉Oracle、Mysql等數(shù)據(jù)庫,并能簡單的介紹自己掌握的程度。由于php做出的動態(tài)頁面比用其他語言做出來的頁面在執(zhí)行效率以及CGI方面高得多,所以你還需要在面試中說出自己的文檔撰寫能力很強(qiáng)。
三、PHP程序員應(yīng)該具備獨(dú)立分析和解決問題的能力,可以在自我介紹中講講自己曾經(jīng)遇到過的問題是如何解決的。讓面試官看到你的能力,這將會直接影響到你自我介紹的成功與否。
四、一個(gè)PHP程序員必須有良好的職業(yè)道德和工作態(tài)度,所以在面試中應(yīng)該盡量講自己在做項(xiàng)目時(shí)的認(rèn)真態(tài)度以及今后的工作規(guī)劃,表現(xiàn)出自己的進(jìn)取心。
五、還有關(guān)于溝通能力和理解能力的體現(xiàn),這個(gè)在與HR的交談中就可以表現(xiàn)出來,所以需要做的工作就是從容的有條理的把自我介紹說完,回答每一個(gè)問題時(shí)都應(yīng)該簡潔明了,關(guān)于自我介紹可以提前做個(gè)草稿,背一下。
六、團(tuán)隊(duì)合作能力也是企業(yè)非??粗氐?,在培訓(xùn)中老師一般都會帶領(lǐng)大家做項(xiàng)目,大的項(xiàng)目一般會分小組,每個(gè)人都有相對應(yīng)的任務(wù),這就模擬了公司中的團(tuán)隊(duì)合作,在自我介紹過程中要把做項(xiàng)目的具體流程以及相互協(xié)作的過程說出來,讓HR看到自己具備團(tuán)隊(duì)合作的能力。
七、最后就是執(zhí)行力,每當(dāng)任務(wù)分配下來的時(shí)候該如何執(zhí)行,還有自己講過職業(yè)規(guī)劃后該如何執(zhí)行,還有在學(xué)習(xí)的過程中是如何人字形的,遇到困難又是如何執(zhí)行的,這些都可以體現(xiàn)出php程序員的執(zhí)行力,回答的時(shí)候抓住發(fā)現(xiàn)及時(shí)尋找原因,快速展開行動的這個(gè)主線即可。
八、最重要的是你的能力、技術(shù)以及自己的項(xiàng)目
簡單的列出10點(diǎn)供你參考吧
1、php基礎(chǔ)知識
2、常用函數(shù)使用
3、排序算法
4、引用變量的理解
5、session cookie 的理解
6、http請求 get post php://input 使用
7、mysql數(shù)據(jù)庫鏈表查詢,索引優(yōu)化方案等
8、linux基本命名的使用 crontab,grep ,tail等
9、緩存 redis,memcached等的使用
10、市場上常用的流行PHP框架掌握,熟悉情況