php面試題及答案

總結一些php面試題和答案

1、打印時間 2012-2-2 14:32:33時間戳

echo strtotime(date('2012-2-2 14:32:33'));

2、截取目錄中的文件名和目錄

$str = 'www.baidu.com/aaa/bbb/index.html';
$pos = strrpos($str, '/');
echo substr($str, $pos + 1);
echo substr($str, 0, $pos);
echo basename($str);
echo dirname($str);

3、protect public private interface abstract final static含義

protect 被保護的:本類和子類可以訪問
public 公有的:任何類可以訪問
private 私有的:只有本類可以訪問
interface 接口:只有抽象方法的抽象類
bastract 抽象類:包含抽象方法的類
final 最後的類和方法:不可繼承的類和不可重新方法
static 靜態方法和熟悉:不需要實例化 類名::方法名

4、從表Login中選出name字段包含admin的前十條結果的sql
select * from login where name like '%admin%' limit 10 order by id

5、解釋左連接、右連接、內連接、索引  面試答題是可以用例子來描述
左連接:left join :select a.*,b.* from table1 a left join table2 b on a.uid=b.uid where a.uid=2;
右連接:right join  :select a.*,b.* from table1 a right join table2 b on a.uid=b.uid where a.uid=2;
內連接:inner join:select a.*,b.* from table1 a inner join table2 b on a.uid=b.uid where a.uid=2;
索引:index  
添加索引:alter table user add index in_username(username)

5、字符串轉數組,數組轉字符串,字符串查找,字符串替換分別是哪些函數?

字符串轉數組:explode,數組轉字符串:implode,字符串替換:str_replace、preg_replace

6、寫一個函數,儘可能高效的從一個url取出擴展名
例如http://www.test.com.cn/abc/de/fg.php取出php或.php*/
$str = 'http://www.test.com.cn/abc/de/fg.php';
function getExt($url) {
    $arr = parse_url($url);
    $file = basename($arr['path']);
    $ext = explode('.', $file);
    return $ext[1];
}
$res = getExt($str);
echo $res;

7、解釋mvc
mvc是一種開發模型,可以實現視圖層和邏輯層分離
M:model數據模型 對數據庫增刪改查
V:view 視圖層 識圖展示
C: contrel 邏輯層 處理業務邏輯

8、描述一下大流量高併發量網站的解決方案

(這種問題基本上不屬於phper的,這麼問的也基本上是小公司,遇到時候可以反問:咱們公司併發是多少、用戶多少、咱們公司遇到什麼問題了)
1、lvs或nginx負載均衡
2、squid緩存或者nginx web chche緩存
3、web服務器用nginx代替apache(apache同時處理大概3000-4000,nginx大概20000 不過百分之90的公司都用apache)
4、php頁面靜態化 smarty或者框架
5、使用緩存技術redis memchahe
6、sql語句優化、緩存優化、sql慢查詢
7、數據庫主從分離
8、數據庫分表分區

負載均衡示意圖自己畫的 如果不準確請指點一二

9、如何防止sql注入
1、表單儘量用post
2、$_SERVER[HTTP_REFERER]判斷提交者源頭
3、開啓addslashed
4、密碼設置md5加密
5、sql語句預處理 thinkphp

10、網站防盜鏈
1、服務器防止:apache nginx做rewrite基於來源做判斷組織盜鏈
2、代碼防止:$_SERVER['HTTP_REFERER']

11、用php寫出一個安全的用戶登錄系統需要注意哪些方面
1、post提交後臺php程序
2、增加驗證碼(圖片或語音)
3、密碼多次登錄錯誤限制登錄
4、限制粘貼密碼
5、使用動態口令

12、使用過哪些php框架
1、laravel:最流行的php框架,使用最廣最熱的框架 適合大型企業使用
2、thinkphp:國內流行框架,中文文檔社區
3、yii、ci、zend等
4、workerman 高性能即時通訊

13、使用過哪些版本控制器
1、svn subversion版本控制
2、github版本控制

14、SESSION和COOKIE的區別是什麼
1、SESSION保存在服務器端 COOKIE保存在客戶端 SESSION依賴進行傳輸 如果COOKIE被禁用了 SESSION將不能繼續使用

15、http狀態中302、403、500代碼含義
302重定向、403服務器拒絕訪問、500服務器內部錯誤

16、linux下建立壓縮包、解壓縮包的命令
tar czf test.tar.gz test.php
tar xzf test.tar.gz

17、數據庫類型 char varchar意思和區別
char的場地固定爲設置的長度 varchar爲可變長度

18、MyISAM和InnoDB的基本區別
innodb支持事物、存儲過程、行級鎖定
增刪改方面myisam優於innodb 當數據量特別大時 他們相差不大

19、如何讓禁用cookie的客戶端還可以實現數據共享
修改php.ini中 session.user_trans_sid=1 這樣會自動在連接中添加參數sessionid
從而服務器端獲取到客戶端的sessionid  如果用戶沒有禁用cookie 那就不會有sessionid參數

20、isset()和empty()區別
isset判斷變了是否存在 是否定義
empty判斷是否爲空 如0 '' null 空數組

21、頁面之間傳遞變量
get post ajax curl cookie session

22、數據表student 字段name class score 
1:對每個班的成績進行排序
select * from sutdent order by class,score desc 

2:查出每個班及格人數和不及格人數
select class,sum(if(score>=60,1,0)) jige,sum(if(score<60,1,0)) bujige from student grouy by class
3:用 php寫連接數據庫,執行以上sql、顯示結果、判斷錯誤、關閉數據庫過程
$con = mysql_connect('localhost', 'user', 'password');
mysql_select_db('test');
$sql = "select class,sum(if(score>=60,1,0)) jige,sum(if(score<60,1,0)) bujige from student grouy by class";
$res = mysql_query($sql);
if($res) {
    while($row = mysql_fetch_assoc($res)) {
        print_r($row);
    }
}
mysql_close($con);

23、出常見的排序算法,並用php實現冒泡排序
 */
$arr = array(54, 67, 9, 33, 98, 12, 19);
for ($i=0; $i < count($arr) - 1; $i++) { 
    for ($j=0; $j < count($arr) - 1; $j++) { 
        if($arr[$j] > $arr[$j+1]) {
            $a = $arr[$j];
            $arr[$j] = $arr[$j+1];
            $arr[$j+1] = $a;
        }
    }
}
print_r($arr);

24、面向對象中接口和抽象類的區別和應用場景
抽象類:含有抽象方法的類
接口:只含有抽象方法的類
一個類可以繼承多個接口,只能繼承一個抽象類
接口的使用方式通過implements關鍵字進行,抽象類通過extend繼承

25、用面向對象實現A對象繼承B和C對象
interface B {
    function b_fun();
}
interface C {
    function c_fun();
}
class A implements B,C {
    function b_fun()
    {
        echo 'b';
    }
    function c_fun()
    {
        echo 'c';
    }
}

26、smarty模板引擎關鍵字
foreach volist assign display if switch for php 模板繼承

 

後續會不定更。。。有問題歡迎反饋

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章