搜尋
首頁後端開發php教程php面試題總結分享

php面試題總結分享

Mar 26, 2018 am 10:37 AM
php分享總結

本文主要和大家分享php面試題總結,希望能幫助大家。

1. 什麼事面向對象?主要特徵是什麼?

物件導向是程式的一種設計方式,它利於提高程式的重用性,使程式結構更加清晰。主要特徵:封裝、繼承、多型。

2. SESSION 與 COOKIE的區別是什麼,請從協議,產生的原因與作用說明?

1、http無狀態協議,不能區分用戶是否是從同一個網站上來的,同一個使用者請求不同的頁面不能看做是同一個使用者。

2、SESSION儲存在伺服器端,COOKIE保存在客戶端。 Session比較安全,cookie用某些手段可以修改,不安全。 Session依賴cookie進行傳遞。

停用cookie後,session無法正常使用。 Session的缺點:保存在伺服器端,每次讀取都從伺服器讀取,對伺服器有資源消耗。 Session保存在伺服器端的檔案或資料庫中,預設保存在檔案中,檔案路徑由php設定檔的session.save_path指定。 Session文件是公有的。

3. HTTP 狀態中302、403、 500程式碼意義?

第一二三四五原則: 一. 訊息系列  二成功系列      三. 重定向系列四. 請求錯誤系列      五. 伺服器端錯誤系列

302:暫時轉移成功,請求的內容已轉移到新位置403:禁止存取500:伺服器內部錯誤401代表未授權。

4. Linux下建立壓縮包,解壓縮包的命令

Tar.gz:

打包:tar czf file.tar.gz file.txt

解壓縮:tar xzf file.tar.gz

Bz2:

打包:bzip2 [-k]  檔案

解壓縮:bunzip2 [-k] 檔案

Gzip(只對文件,不保留原始文件)

打包:gzip file1.txt

解壓縮:gunzip file1.txt.gz

#Zip: - r 對目錄

打包:zip file1.zip file1.txt

解壓縮:unzip file1.zip

5. 請寫出資料類型(int char varchar datetime text)的意思;請問 varchar 和 char有什麼差別?

Int 整數char 定長字元 Varchar 變長字元 Datetime 日期時間型Text 文字型 Varchar與char的區別 char是固定長度的字元類型,分配多少空間,就佔用多長空間。 Varchar是可變長度的字元類型,內容有多大就佔用多大的空間,能有效節省空間。由於varchar類型是可變的,所以在資料長度改變的時,伺服器要進行額外的操作,所以效率比char類型低。

6. MyISAM和 InnoDB 的基本差異?索引結構如何實作?

MyISAM類型不支援事務,表鎖,易產生碎片,要經常優化,讀寫速度較快,而InnoDB類型支援事務,行鎖,有崩潰復原能力。讀寫速度比MyISAM慢。

建立索引:alerttable tablename add index (`欄位名稱`)

7. 不使用cookie傳送一個cookie.

為客戶端:session_start()開啟時,產生一個常數SID,當COOKIE開啟時,這個常數為空,當COOKIE關閉時,這個常數中儲存了PHPSESSID的值。透過在URL後面加上一個SID參數來傳遞SESSIONID的值,從而讓客戶端頁面可以使用SESSION裡面的值。當客戶端開啟COOKIE和伺服器端開啟SESSION。瀏覽器第一次請求,伺服器會傳送一個COOKIE裡面有一個COOKIE裡面儲存SESSIONID.當瀏覽器第二次請求時,會把已存在

8. isset() 和 empty() 區別

 Isset判斷變數是否存在,可以傳入多個變量,若其中一個變數不存在則返回假,empty判斷變數是否為空為假,只可傳一個變量,如果為空為假則返回真。

9. 如何在頁面之間傳遞變數(至少兩種方式) ?   GET,POST,COOKIE,SESSION,隱藏表單

1. 寫出符合URL的正規表示式.

'/^(https?|ftps?):\/\/(www)\.([^\.\/]+)\.(com|cn|org)(\/[\w -\.\/\?\%\&\=]*)?/i'

#

2. 請寫出常見的排序演算法,並以PHP實作冒泡排序,將陣列$a = array()依照從小到大的方式排序。

常見的排序演算法: 冒泡排序法、快速排序法、簡單選擇排序法、堆排序法、直接插入排序法、希爾排序法、合併排序法。

冒泡排序法的基本想法是:對待排序記錄關鍵字從後往前(逆序)進行多遍掃描,當發現相鄰兩個關鍵字的次序與排序要求的規則不符時,就將這兩個記錄進行交換。這樣,關鍵字較小的記錄將逐漸從後面向前面移動,就像氣泡在水中向上浮一樣,所以該演算法也稱為氣泡排序法。

// 冒泡排序法
Function mysort($arr){
         For($i=0;$i<count($arr); $i++){
                  For($j=0; $j<count($arr)-1-$i; $j++){
                           If($arr[$j]> $arr[$j+1]){
                                    $tmp=$arr[$j];
                                    $arr[$j]=$arr[$j+1];
                                    $arr[$j+1]=$tmp;
            }
       }
   }
         Return$arr;
}
$arr=array(3,2,1);
print_r(mysort($arr));

3. 請說明 PHP 中傳值與傳引用的差異。什麼時候傳值什麼時候傳引用?
         依值傳遞:函數範圍內對值的任何改變在函數外部都會被忽略

      依引用傳遞:函數範圍內對值的任何改變在函數外部也能反映出這些修改

      優缺點:以數值傳遞時,php必須複製值。特別是對於大型的字串和物件來說,這將會是一個代價很大的操作。按引用傳遞則不需要複製值,對於效能提升很有好處。


在PHP中error_reporting這個函數有什麼作用?
         設定 PHP的錯誤等級並回到目前等級。


請用正規表示式(Regular Expression)寫一個函數來驗證電子郵件的格式是否正確。

if(isset($_POST[&#39;action&#39;]) && $_POST[&#39;action&#39;]==’submitted’){
         $email=$_POST[&#39;email&#39;];
         if(!preg_match(“/^[0-9a-zA-Z-]+@[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+){1,3}$/”,$email)){
                  echo“电子邮件检测失败”;
         }else{
                  echo“电子邮件检测成功”;
         }
}

寫一個二維數組排序演算法函數,能夠具有通用性,可以呼叫php內建函數(array_multisort())

//二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序
function array_sort($arr, $keys, $order=0) {
         if(!is_array($arr)) {
                  return false;
         }
         $keysvalue =array();
         foreach($arr as$key => $val) {
                  $keysvalue[$key] = $val[$keys];
         }
         if($order == 0){
                  asort($keysvalue);
         }else {
                  arsort($keysvalue);
         }
         reset($keysvalue);
         foreach($keysvalueas $key => $vals) {
                  $keysort[$key] = $key;
         }
         $new_array =array();
         foreach($keysortas $key => $val) {
                  $new_array[$key] = $arr[$val];
         }
         return $new_array;
}

請以空格作為間隔,拆分字符串'Apple Orange BananaStrawberry',組成數組$fruit,

* 數組中所有元素都用小寫字母,並按照字母先後次序排序

class sort {
         private $str;
         public function__construct($str) {
                  $this->str=strtolower($str);
         }
         private functionexplodes() {
                  if(empty($this->str)) returnarray();
                  $arr=explode("",$this->str);
                  return is_array($arr)?$arr:array($arr);
         }
         public functionsort() {
                  $explode=$this->explodes();
                  sort($explode);
                  return $explode;
         }
}
$str=&#39;Apple Orange Banana Strawberry&#39;;
$sortob=new sort($str);
var_dump($sortob->sort());

對於用戶輸入一串字符串$string ,要求$string中只能包含大於0的數字和英文逗號,請用正規表示式驗證,對於不符合要求的$string返回出錯訊息

class regx {
         public staticfunction check($str) {
         if(preg_match("/^([1-9,])+$/",$str)){
                  return true;
         }
         return false;
         }
}
$str="12345,6";
if(regx::check($str)) {
echo "suc";
} else {
echo "fail";
}

windows平台, Apache Http Server啟動失敗, 排錯思路是什麼?

檢查apache使用的80埠是否被佔用,如果被佔用,先停止佔用80埠的服務,然後啟動apache伺服器


PHP session擴充默認將session資料儲存在哪裡? D

A)  SQLite Database  

B)  MySQL Database

C)  Shared Memory

D)  File System

##C)  Shared Memory

D)  File System

E)  Session Server

如果你想要自動載入類,以下哪一個函數宣告是正確的C

A)  function autoload($class_name)       


######################################################################################################################11 )  function __autoload($class_name, $file)######C)  function __autoload($class_name)######D)  function _autoload($class_name)###unction autoload($ class_name, $file)######PHP程式使用utf-8編碼, 以下程式輸出結果是什麼? B######
<?php$str = ’hello你好世界’;
echo strlen($str);
?>
###A) 9           B) 13(gbk) C) 18      B) 13(gbk) C) 18 17(utf8)######你所知道的php陣列相關的函數? ######array()----建立陣列######array_combine()----透過合併兩個陣列來建立一個新陣列######range()--- -建立並傳回一個包含指定範圍的元素的陣列######compact()----建立一個陣列######array_chunk()----將一個陣列分割成多個## ####array_merge()----把兩個或多個數字組合成一個數組######array_slice()----在數組中根據條件取出一段值######array_diff ()----傳回兩個陣列的差集陣列######array_intersect()----計算陣列的交集######array_search()----在陣列中搜尋給定的值######array_splice()----移除陣列的一部分且取代它###

array_key_exists()----判斷某個陣列中是否存在指定的key

shuffle()----把陣列中的元素以隨機順序重新排列

array_flip ()----交換數組中的鍵和值

array_reverse()----將原始數組中的元素順序翻轉,創建新的數組並返回

array_unique() ----移除數組中重複的值

php讀取檔案內容的幾種方法和函數?

開啟文件,然後讀取。 Fopen()fread()

打開讀取一次完成file_get_contents()

#以下程序,變數str什麼值的情況下輸入111?

if( ! $str ) { echo 111; }

在$str值為:0,'0′,false,null,”"

你所知道的PHP的一些技術(smarty等)?

Smarty,jquery,ajax,memcache,p+css,js,mysqli,pdo,svn,thinkphp,brophp,yii

你所熟悉的PHP論壇系統 有哪些?

Discuz

你所熟悉的PHP商城系統 有哪些?

Ecshop

你所熟悉的PHP開發框架 有哪些?

Brophp,thinkphp

說說你對快取技術的了解?

1、快取技術是將動態內容快取到文件中,在一定時間內存取動態頁面直接呼叫快取文件,而不必重新存取資料庫。

2、使用memcache可以做快取。

你所知道的設計模式有哪些?

工廠模式、策略模式、單元素模式、觀察者模式、命令鏈模式

說說你對程式碼管理的了解?常使用那些程式碼版本控制軟體?

通常一個專案是由一個團隊去開發,每個人將自己寫好的程式碼提交到版本伺服器,由專案負責人按照版本進行管理,方便版本的控制,提高開發效率,保證需要時可以回到舊版。

常用的版本控制器:SVN

說說你對SVN的了解?優缺點?

SVN是一種版本控制器,程式設計師開發的程式碼遞交到版本伺服器進行集中管理。

SVN的優點:程式碼集中管理,版本控制容易,操作比較簡單,權限控制方便。

缺點:不能隨意修改伺服器項目資料夾。

怎麼找到PHP.ini的路徑?

通常都在php的安裝目錄下,或是window系統的windows目錄下。

PHP加速模式/擴充? PHP調試模式/工具?

Zend Optimizer加速擴充

偵錯工具:xdebug

你常用到的mysql指令?

Show databases

Show tables

Insert into 表名()values()

Update 表名set欄位=值where ...

Delete from 表名where ...

Select * from 表名where 條件order by ... Desc/asc limit ... Group by ... Having ...

進入mysql管理命令列的命令?

Mysql -uroot -p回車密碼

show databases; 這個指令的作用?

顯示目前mysql伺服器中有哪些資料庫

show create database mysql; 這個指令的功能?

顯示建立資料庫的sql語句

show create table user; 這個指令的作用?

顯示建立表格的sql語句

desc user; 這個指令的功能?

查詢user表的結構

explain select * from user; 這個指令的作用?

取得select相關資訊

show processlist; 這個指令的作用?

顯示哪些執行緒正在執行

SHOW VARIABLES; 這個指令的功能?

顯示系統變數和值

SHOW VARIABLES like ’%conn%’; 這個指令的功能?

显示系统变量名包含conn的值

LEFT JOIN 写一个SQL语句?

SELECTA.id,A.class FROM A LEFT JOIN B ON A.cid=B.id

in, not ni, exist, not exist的作用和区别?

in在什么中

Not in 不在什么中

Exists 存在

Not exists 不存在

怎么找到数据库的配置文件路径?

在数据库安装目录下,my.ini

简述Linux下安装PHP的过程?

安装软件之前先安装编译工具gcc、gcc-c++

拷贝源码包,解包解压缩

Cd /lamp/php进入php目录
./configure–prefix=/usr/local/php –with-config-file-path=/usr/local/php/etc指定安装目录和配置文件目录
Make 编译
Make install安装
简述Linux下安装Mysql的过程?
Groupadd mysql 添加一个用户组mysql
Useradd -gmysql mysql 添加一个mysql用户指定分组为mysql
Cd /lamp/mysql 进入mysql目录
./configure–prefix=/usr/local/mysql/ –with-extra-charsets=all
Make
Make all
简述Linux下安装apache的过程?
Cd /lamp/httpd 进去apache软件目录
./configure–prefix=/usr/local/apache2/ –sysconfdir=/etc/httpd/ –with-included-apr
Make
Make all
HTML/CSS/p/Javascritp:
1. 设计一个页面(4个 p 第一个p 宽960px 居中;第2-4个p  3等分960px;)
<style>
Body{Text-align:center; Margin:0; Padding:0; }
#box{Width:960px; Margin:0 auto; }
.small{Width:320px; Float:left; }
</style>
<pid=’box’>
<pclass=’small’></p>
<pclass=’small’></p>
<pclass=’small’></p>
</p>
用javascript取得一个input的值?取得一个input的属性?
document.getElementById(‘name’).value;
document.getElementById(‘name’).type;
用Jquery取得一个input的值?取得一个input的属性?
$(“input[name=&#39;aa&#39;]“).val();
$(“input[name=&#39;aa&#39;]“).attr(‘type’);
请您写一段ajax提交的js代码,或者写出ajax提交的过程逻辑。
var xmlhttp;
if(window.XMLHttpRquest){
xmlhttp=newXMLHttpRequest();
}elseif(window.ActiveXObject){
xmlhttp=newActiveXObject(‘Microsoft.XMLHTTP’);
}
xmlhttp.open(‘GET’,’1.php?aa=name’,true);
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){
var text=xmlhttp.responseText;
}
}
}
xmlhttp.send(null);

简述Cookie的设置及获取过程

设置COOKIE的值:

Setcookie(名称,值,保存时间,有效域);

获取值:$_COOKIE['名称'];

面向对象中接口和抽象类的区别及应用场景?

1、有抽象方法的类叫做抽象类,抽象类中不一定只有抽象方法,抽象方法必须使用abstract关键字定义。

2、接口中全部是抽象方法,方法不用使用abstract定义。

3、当多个同类的类要设计一个上层,通常设计为抽象类,当多个异构的类要设计一个上层,通常设计为接口。

用面向对象来实现A对象继承B和C对象

Interface B{... }

Interface C{... }

Class Aimplements B,C{ ... }

相关推荐:

PHP面试题之算法题

php面试题中面向对象的题目分析

最让人容易出错的10道php面试题

以上是php面試題總結分享的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
可以在PHP會話中存儲哪些數據?可以在PHP會話中存儲哪些數據?May 02, 2025 am 12:17 AM

phpsessionscanStorestrings,數字,數組和原始物。

您如何開始PHP會話?您如何開始PHP會話?May 02, 2025 am 12:16 AM

tostartaphpsession,usesesses_start()attheScript'Sbeginning.1)placeitbeforeanyOutputtosetThesessionCookie.2)useSessionsforuserDatalikeloginstatusorshoppingcarts.3)regenerateSessiveIdStopreventFentfixationAttacks.s.4)考慮使用AttActAcks.s.s.4)

什麼是會話再生,如何提高安全性?什麼是會話再生,如何提高安全性?May 02, 2025 am 12:15 AM

會話再生是指在用戶進行敏感操作時生成新會話ID並使舊ID失效,以防會話固定攻擊。實現步驟包括:1.檢測敏感操作,2.生成新會話ID,3.銷毀舊會話ID,4.更新用戶端會話信息。

使用PHP會話時有哪些性能考慮?使用PHP會話時有哪些性能考慮?May 02, 2025 am 12:11 AM

PHP会话对应用性能有显著影响。优化方法包括:1.使用数据库存储会话数据,提升响应速度;2.减少会话数据使用,只存储必要信息;3.采用非阻塞会话处理器,提高并发能力;4.调整会话过期时间,平衡用户体验和服务器负担;5.使用持久会话,减少数据读写次数。

PHP會話與Cookie有何不同?PHP會話與Cookie有何不同?May 02, 2025 am 12:03 AM

PHPsessionsareserver-side,whilecookiesareclient-side.1)Sessionsstoredataontheserver,aremoresecure,andhandlelargerdata.2)Cookiesstoredataontheclient,arelesssecure,andlimitedinsize.Usesessionsforsensitivedataandcookiesfornon-sensitive,client-sidedata.

PHP如何識別用戶的會話?PHP如何識別用戶的會話?May 01, 2025 am 12:23 AM

phpIdentifiesauser'ssessionSessionSessionCookiesAndSessionId.1)whiwsession_start()被稱為,phpgeneratesainiquesesesessionIdStoredInacookInAcookInAcienamedInAcienamedphpsessIdontheuser'sbrowser'sbrowser.2)thisIdallowSphptpptpptpptpptpptpptpptoretoreteretrieetrieetrieetrieetrieetrieetreetrieetrieetrieetrieetremthafromtheserver。

確保PHP會議的一些最佳實踐是什麼?確保PHP會議的一些最佳實踐是什麼?May 01, 2025 am 12:22 AM

PHP會話的安全可以通過以下措施實現:1.使用session_regenerate_id()在用戶登錄或重要操作時重新生成會話ID。 2.通過HTTPS協議加密傳輸會話ID。 3.使用session_save_path()指定安全目錄存儲會話數據,並正確設置權限。

PHP會話文件默認存儲在哪裡?PHP會話文件默認存儲在哪裡?May 01, 2025 am 12:15 AM

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具