php面試題-1


1、php基礎部分

php的一大優勢是跨平台性,什么是跨平台?

答案:

  php的最佳運行環境為apache、mysql 、php這里不受操作系統現在因此 為跨平台

 

2、數據傳輸有哪些方式?

get和post

區別:

緩存性 get可以緩存 post不可以

數據傳輸大小 get一般為2到4k (還受到瀏覽器的影響但想差不到) post 根據php.ini中的配置限制 也可以無限大

數據傳輸方式get通過url  post通過body

可見性 get在地址欄上可以看到 post無法觀察

安全性 建議使用post傳輸安全隱蔽的數據

做數據查詢建議用Get式;做數據添加、修改或刪除建議用Post方式;

 

3、學習和掌握的框架和模板引擎和系統有哪些?

比如yii tp laravel ci 等等 框架 smarty引擎 ecshop  phpCMS等等

 

4、掌握哪些前端技術?

html、css、javascript、jquery、bootstrap等等

 

5、Ajax的優勢?

異步傳輸數據、使用javascript或者jquery實現局部刷新,減輕服務端的壓力,提高用戶體驗

 

 

6、程序開發過程當中應該注意哪些安全問題?

使用驗證碼防止注冊機大量灌水

使用token令牌防止遠程登錄和驗證登錄狀態

使用mysql的語句預處理防止sql注入

 

 

7、如何提高程序運行速度?

優化SQL語句 避免使用select * 這樣的語句應該明確要查詢的字段  使用表連接查詢代替子查詢、不使用模糊查詢

創建索引

經常使用的數據應該生成緩存可以使用redis 或者ob實現靜態化頁面

mysql主從復制 讀寫分離

nginx 負載均衡  將壓力分布在多個服務器上面

 

 

8、php能否和其他數據庫搭配?

可以、不過mysql是最佳選擇

 

9、什么是MVC 有什么優點?

M 業務模型  V視圖模型  C控制器模型

由控制器調用model實現業務邏輯 並將數據映射在視圖層

優點:讀寫代碼分離、降低數據冗余度

 

 

9、json的理解

json(javascript  Object notation) 這是一種輕量級的數據交換格式 適用於多種編程語言的數據交換

利用json_decode將字符串型的json數據轉換成php數組

使用json_encode將數組轉換成json數據類型

 

10、echo print print_r 的區別

前面的echo 是數據結構 不是函數沒有返回值 效率高

print 有返回值 並且多用於字符串的但因

print_r有返回值 打印符合數據類型 如數組 對象 方法等等

 

11、session 和cookie 的區別

存儲位置:前者在服務器上面、后者在瀏覽器上面

安全性:session比較安全

session需要開啟會話服務 cookie不需要

數組操作函數

//創建數組
$a = array(
    "a"=>1,
    "b"=>12,
    "age"=>31,
    "a"=>22
);
$b = array(
    "age"=>1
);
$c = array(
    1,
    "age"=>12
);
//比較多個數組值的差異 返回$a中存在 但后邊元素集合中不存在的值
print_r(array_diff($a,$b,$c)); 
//返回數組的交集
print_r(array_intersect($a,$b,$c));
//返回數組的鍵的集合
print_r(array_keys($a));
//返回數組的值的集合
print_r(array_values($a));
//去除重復的鍵 在原來的數組上改變 而且返回值為操作的數組
print_r(array_unique($a));

//添加多個元素 進棧
array_push($a,1,2);
//出棧
array_pop($a);//只能出棧一個元素 只能傳遞數組出棧最后一個元素
print_r($a);

 

echo "<meta charset=utf8>";
$sum = array(1,2,3,4,5);
function sum($value,$key,$p){
    //$sum[$key]+=1;
    echo $key;
    echo $value;
    echo $p;
}
array_walk($sum,"sum","這是一個參數");
print_r($sum);//對數組中的每個元素都做回調處理

 

php處理字符串的常見函數重點關注參數和返回值

 剔除字符

/*第二個參數為空時 默認\0 \t \n \x0B \r 都會被剔除*/
$str = " hello world asd\n";
$html = "   hehe";
echo trim($str).$html."<br>";
echo trim($str).trim($html);
echo trim($str," hed\n");//第二個參數只能是字符串的開頭或者結尾開始匹配並且剔除不能直接從中間開始 還有ltrim rtrim

 

字符串長度

/*第二個參數為空時 默認\0 \t \n \x0B \r 都會被剔除*/
$str = " hello world asd\n";
echo strlen($str);
/*

在strlen計算時,對待一個UTF8的中文字符是3個長度,所以“中文a字1符”長度是3*4+2=14 
在mb_strlen計算時,選定內碼為UTF8,則會將一個中文字符當作長度1來計算

mb_strlen並不是PHP核心函數,使用前需要確保在php.ini中加載了php_mbstring.dll,即確保

“extension=php_mbstring.dll”這一行存在並且沒有被注釋掉,否則會出現未定義函 數的問題。
 */
echo mb_strlen("我是中國人",'UTF8');

subStr函數

echo "<br>".substr("I am your father!!!",2,2);//substr(string,start,length)從第2個開始截取兩位 應該為am

str_replace 

$test = "I am your father";
echo str_replace("father","mother",$test);//將father替換成mother

 str_repeat和is_string

echo str_repeat("-",10);//重復字符串
$a = 1;
print(is_string("asdf"));//判斷是否為字符串

打亂字符串 str_shuffle

 

sprintf返回格式化后的字符串

$txt = sprintf("%s 每天有 %u 萬人在訪問!", $str, $number);

strstr()//查看某字符創首次出現的位置  返回該字符串及后面剩余部分:

 

echo addslashes("<p style='coor:red'>sdf</p>hello"); 給引號加斜杠

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM