面試PHP一般會考查你哪些內容呢?不妨看看

2021-03-02 PHP面試題

1、抓取遠程圖片到本地,你會用什麼函數?

方法一

用fsockopen打開一個網絡連接,打開成功後會返回一個文件句柄,然後可以使用fread函數讀取文件的內容,使用fwrite函數把文件寫到本地(實現了把遠程文件抓取到本地的功能),最後使用fclose關閉這個連接。

方法二

讀取遠程圖片內容,然後把保存的內容保存到本地的圖片文件中。

<?php
    $img=file_get_contents("http://www.xfcodes.com/img/baidu_logo.gif");
    file_put_contents('local.gif',$img);
    echo '<img src="local.gif">';

2、用PHP列印出前一天的時間,列印格式是2020年5月10日22:21:21

echo date('Y-m-d H:i:s',strtotime('-1 day'));

 

3、javascript能否定義二維數組,如果不能你如何解決?

javascript不支持二維數組定義,可以用arr[0]= new array()來解決

 

4、假設a.html和b.html在同一個文件夾下面,用javascript實現當打開a.html5秒鐘後,自動跳轉到b.html

<script>
function go2b(){
     window.location = 「b.html」;
     window.close();
}

setTimeout( 「go2b()」,5000 ); //5秒鐘後自動執行go2b()
</script>

 

5 預定義變量$_SERVER 的用法。

$_SERVER是一個包含了諸如頭信息(header)、路徑(path)、以及腳本位置
(script locations)等等信息的數組。

//正在瀏覽當前頁面用戶的 IP 地址:127.0.0.1
echo $_SERVER["REMOTE_ADDR"].」<br />」;

//查詢(query)的字符串(URL 中第一個問號 ? 之後的內容):id=1&bi=2
echo $_SERVER["QUERY_STRING"].」<br />」;

//當前運行腳本所在的文檔根目錄:d:inetpubwwwroot
echo $_SERVER["DOCUMENT_ROOT"].」<br />」;

7、在HTTP 1.0中,狀態碼 401 的含義是什麼;如果返回「找不到文件」的提示,則可用 header 函數如何寫?

狀態碼 401表示未授權;
header(「HTTP/1.0 404 Not Found」);

 

擴展

Http各種狀態碼總結,你經常會遇到哪些?

8、把 John新增到users陣列?

$users[] = 『john』;   
array_push($users,『john』);

 

9 、在PHP中error_reporting這個函數有什麼作用?

error_reporting() 設置 PHP 的報錯級別並返回當前級別。

 

10、如何修改SESSION的生存時間.

方法1:將php.ini中的session.gc_maxlifetime設置為9999  重啟apache

方法2:
$savePath = "./session_save_dir/";
$lifeTime = 小時 * 秒;
session_save_path($savePath);
session_set_cookie_params($lifeTime);
session_start();

方法3:
setcookie() and session_set_cookie_params($lifeTime);

 

11、有一個網頁地址, 比如PHP自學中心的主頁:http://www.startphp.cn/index.html,如何得到它的內容?

方法1(對於PHP5及更高版本):
$readcontents = fopen("http://www.startphp.cn/index.html", "rb");
$contents = stream_get_contents($readcontents);
fclose($readcontents);
echo $contents;

方法2:
echo file_get_contents("http://www.startphp.cn/index.html");

 

12、寫一個函數,儘可能高效的,從一個標準 url 裡取出文件的擴展名

例如:http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php

方法1:
function getExt($url){
    $arr = parse_url($url);
    $file = basename($arr['path']);
    $ext = explode(".",$file);
    return $ext[1];
}

方法2:
function getExt($url) {
    $url = basename($url);
    $pos1 = strpos($url,".");
    $pos2 = strpos($url,"?");

    if(strstr($url,"?")){
        Return substr($url,$pos1 + 1,$pos2 – $pos1 – 1);

    } else {
        return substr($url,$pos1);
    }
}

 

13、使用五種以上方式獲取一個文件的擴展名

要求:dir/upload.image.jpg,找出.jpg 或者jpg ,必須使用PHP自帶的處理函數進行處理,方法不能明顯重複,可以封裝成函數get_ext1($file_name), get_ext2($file_name)

方法1:
function get_ext1($file_name){
    return strrchr($file_name, '.');
}
方法2:
function get_ext2($file_name){
    return substr($file_name,strrpos($file_name, '.'));
}
方法3:
function get_ext3($file_name){
    return array_pop(explode('.', $file_name));
}
方法4:
function get_ext4($file_name){
    $p = pathinfo($file_name);
    return $p['extension'];

}
方法5:
function get_ext5($file_name){
    return strrev(substr(strrev($file_name), 0,strpos(strrev($file_name), '.')));
}

14、PHP中的null與false,『』與0有什麼區別?

<?php
$str1 = null;
$str2 = false;
echo $str1==$str2 ? '相等' : '不相等';

$str3 = 」;
$str4 = 0;
echo $str3==$str4 ? '相等' : '不相等';

$str5 = 0;
$str6 = '0′;
echo $str5===$str6 ? '相等' : '不相等';
?>

答案:相等  相等  不相等

 

15、MySQL資料庫中的欄位類型varchar和char的主要區別是什麼?那種欄位的查找效率要高,為什麼?
varchar是變長,節省存儲空間。char是固定長度。

char查找效率要varchar型快,因為varchar是非定長,必須先查找長度,然後進行數據的提取,比char定長類型多了一個步驟,所以效率低一些

 

16、請使用JavaScript寫出三種產生一個Image 標籤的方法(提示:從方法、對象、HTML角度考慮)

(1)var img = new Image();
(2)var img = document.createElement(「image」)
(3)img.innerHTML = 「<img src=」xxx.jpg」 />」

 

17、請描述出兩點以上XHTML和HTML最顯著的區別

(1)XHTML必須強制指定文檔類型DocType,HTML不需要
(2)XHTML所有標籤必須閉合,HTML比較隨意

 

18、寫出三種以上MySQL資料庫存儲引擎的名稱(提示:不區分大小寫)
MyISAM、InnoDB、BDB(Berkeley DB)、Merge、Memory(Heap)、Example、Federated、Archive、CSV、Blackhole、MaxDB 等等十幾個引擎

 

19、求兩個日期的差數,例如2020-2-5 ~ 2020-3-6 的日期差數

方法一:
<?php
class Dtime{
    function get_days($date1,$date2){
        $time1= strtotime($date1);
        $time2= strtotime($date2);

        return($time2-$time1)/86400;
    }
}
$Dtime = new Dtime;
echo $Dtime->get_days('2020-2-5′, '2020-3-6′);
?>

方法二:
<?php
$temp = explode('-', '2020-2-5′);
$time1 = mktime(0, 0, 0, $temp[1], $temp[2], $temp[0]);
$temp = explode('-', '2020-3-6′);
$time2 = mktime(0, 0, 0, $temp[1], $temp[2], $temp[0]);

echo ($time2-$time1)/86400;

方法三:
echo abs(strtotime('2020-2-1')-strtotime('2020-3-1'))/60/60/24   //計算時間差

 

20、請寫一個函數,實現以下功能:字符串「open_door」轉換成「OpenDoor」、」make_by_id」轉換成」MakeById」。

方法1:
function str_explode($str){
    $str_arr=explode('_',$str);
    $str_implode=implode('',$str_arr);
    $str_implode=implode('',explode('',ucwords($str_implode)));

    return $str_implode;
}
$strexplode=str_explode('make_by_id');
print_r($strexplode);

方法2:
$str='make_by_id!';
$expStr=explode('_',$str);

for($i=0;$i<count($expStr);$i++){
   echo ucwords($expStr[$i]);
}

方法3:
echo str_replace(',',ucwords(str_replace('_', '', 'open_door』)));

 

21、一個表中的Id有多個記錄,把所有這個id的記錄查出來,並顯示共有多少條記錄數,用SQL語句及視圖、存儲過程分別實現。

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;

方法:視圖:
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

 

22、js中網頁前進和後退的代碼

前進: history.forward();=history.go(1);
後退: history.back();=history.go(-1);

 

23、echo count(「abc」); 輸出什麼?

答案:1

解析:count :計算數組中的單元數目或對象中的屬性個數

int count ( mixed$var[, int $mode ] ), 如果 var 不是數組類型或者實現了 Countable 接口的對象,將返回1,有一個例外,如果 var 是 NULL 則結果是 0。

對於對象,如果安裝了 SPL,可以通過實現 Countable 接口來調用 count()。該接口只有一個方法 count(),此方法返回 count() 函數的返回值。

 

24、有一個一維數組,裡面存儲整形數據,請寫一個函數,將他們按從大到小的順序排列。

要求執行效率高。並說明如何改善執行效率。(該函數必須自己實現,不能使用php函數)

<?php
function BubbleSort(&$arr){
    $cnt=count($arr);
    $flag=1;

    for($i=0;$i<$cnt;$i++){
        if($flag==0){
            return;
        }

        $flag=0;
        for($j=0;$j<$cnt-$i-1;$j++){

            if($arr[$j]>$arr[$j+1]){
               $tmp=$arr[$j];
               $arr[$j]=$arr[$j+1];
               $arr[$j+1]=$tmp;

               $flag=1;
            }
        }
    }
}
$test=array(1,3,6,8,2,7);
BubbleSort($test);
var_dump($test);

25、請舉例說明在你的開發過程中用什麼方法來加快頁面的加載速度
要用到伺服器資源時才打開,及時關閉伺服器資源,資料庫添加索引,頁面可生成靜態,圖片等大文件單獨伺服器。使用代碼優化工具。

擴展:

你開發的PHP網站訪問很慢,你如何找原因

 

26、.以下的代碼會產生什麼?為什麼?

<?php
$num =10;

function multiply(){
    $num =$num *10;
}

multiply();

echo $num;

由於函式 multiply() 沒有指定 $num 為全域變量(例如 global $num 或者 $_GLOBALS['num']),所以 $num 的值是 10。

 

27. HTTP協議中GET、POST和HEAD的區別?

HEAD:只請求頁面的首部。

GET:請求指定的頁面信息,並返回實體主體。

POST:請求伺服器接受所指定的文檔作為對所標識的URI的新的從屬實體。

1) HTTP 定義了與伺服器交互的不同方法,最基本的方法是 GET 和 POST。事實上 GET 適用於多數請求,而保留 POST 僅用於更新站點。

2) 在FORM提交的時候,如果不指定Method,則默認為GET請求,Form中提交的數據將會附加在url之後,以?分開與url分開。

字母數字字符原樣發送,但空格轉換為「+「號,其它符號轉換為%XX,其中XX為該符號以16進位表示的ASCII(或ISO Latin-1)值。

GET請求請提交的數據放置在HTTP請求協議頭中,而POST提交的數據則放在實體數據中;

GET方式提交的數據最多只能有1024位元組,而POST則沒有此限制。

GET這個是瀏覽器用語向伺服器請求最常用的方法。POST這個方法也是用來傳送數據的,但是與GET不同的是,使用POST的時候,數據不是附在URI後面傳遞的,而是要做為獨立的行來傳遞,此時還必須要發送一個Content_length標題,以標明數據長度,隨後一個空白行,然後就是實際傳送的數據。網頁的表單通常是用POST來傳送的。

28、寫一個函數,算出兩個文件的相對路徑,如b='/a/b/12/34/c.php';計算出a的相對路徑應該是../../c/d

<?php
function releative_path($path1,$path2){
    $arr1 = explode("/",dirname($path1));
    $arr2 = explode("/",dirname($path2));

    for ($i=0,$len = count($arr2); $i < $len; $i++) {
        if ($arr1[$i]!=$arr2[$i]) {
            break;
        }
    }

    // 不在同一個根目錄下
    if ($i==1) {
        $return_path = array();
    }

    // 在同一個根目錄下
    if ($i != 1 && $i < $len) {
        $return_path = array_fill(0, $len - $i,"..");
    }


    // 在同一個目錄下
    if ($i == $len) {
        $return_path = array('./');
    }


    $return_path = array_merge($return_path,array_slice($arr1,$i));
    return implode('/',$return_path);

}

$a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';
$c = '/e/b/c/d/f.php';
$d = '/a/b/c/d/g.php';

echo releative_path($a,$b);//結果是../../c/d
echo "<br />";
echo releative_path($a,$c);//結果是a/b/c/d
echo "<br />";
echo releative_path($a,$d);//結果是./
echo "<br />";

?>

方法一:php函數跳轉,缺點,header頭之前不能有輸出,跳轉後的程序繼續執行,可用exit中斷執行後面的程序。

header("Location:網址");//直接跳轉
header("refresh:3;url=http://axgle.za.NET");//三秒後跳轉

方法二:利用meta

echo"<meta http-equiv=refresh content='0;url=網址'>";

30、寫一個函數,能夠遍歷一個文件夾下的所有文件和子文件夾。

<?php

function my_scandir($dir){
    $files = array();
    if(is_dir($dir)){
        if ($handle = opendir($dir)) {
            while (($flie = readdir($handle))!== false) {
                if ($flie!="." && $file!="..") {
                    if (is_dir($dir."/".$file)) {
                        $files[$file] = my_scandir($dir."/".$file);

                    } else {
                        $files[] = $dir."/".$file;

                    }

                }

            }

            closedir($handle);
            return $files;
        }
    }
}

?>

以上是本文的全部內容,希望對大家的學習有幫助,覺得有用,有需要就支持一下吧

相關焦點

  • 2021部隊文職面試內容有哪些?會考什麼?
    2021部隊文職面試內容有哪些?會考什麼?由北京軍隊文職招聘考試網提供:更多關於2021軍隊文職,考試時間,面試考試內容的內容請關注軍隊文職招聘考試網!或關注北京華圖微信公眾號(bjhuatu),軍隊文職招聘考試諮詢電話:400-010-1568。
  • 2021寧夏軍隊文職面試內容有哪些?會考什麼?
    【導讀】華圖寧夏軍隊文職考試網同步寧夏華圖發布:2021寧夏軍隊文職面試內容有哪些?會考什麼?,詳細信息請閱讀下文!   壹 |文職人員面試形式介紹   從歷年文職人員面試情況來看,面試形式側重在半結構化面試,外加專業知識測試(包含專業技能實踐操作),考查形式多樣,涵蓋內容全面。
  • 「廣東省考面試考情分析」2020廣東省考面試會考哪些內容?
    「廣東省考面試考情分析」2020廣東省考面試會考哪些內容?由廣東公務員考試網考試快訊欄目由提供,更多關於廣東省考,廣東省考成績,廣東公務員考試快訊的內容,請關注廣東公務員考試頻道/廣東公務員考試網!
  • 雙語學校考試有哪些題型和內容?這份模擬試題幫你定位真實水平
    對於備考進入衝刺階段的同學而言,了解考試題型和內容並有針對性地進行查漏補缺至關重要,相較於題海戰術,也許會有事半功倍的效果。01考查科目首先,我們需要了解的是雙語學校初升高一般入學考試會考哪些科目?在這基礎上,有一些學校還會有額外的考試科目,即「高配版」,比如:語文、科學、家長面試、實驗以及個人陳述等,因學校而異。那麼,究竟哪些學校考英文數學?哪些學校考語文?哪些學校考科學呢?
  • php基礎通關大挑戰,看看你能過幾關!
    繼續上一節的內容,通過試題的方式查缺補漏,看看你的php基礎知識還有哪些漏洞!1.在php中,以下代碼列印的結果是?<?php$RESULT =11+011+0x11;echo "$RESULT";?
  • 教師資格證面試會考什麼內容
    教師資格證面試會考什麼內容 http://www.hteacher.net 2020-12-03 15:40 中國教師資格網 [您的教師考試網]
  • 會考 ▏2016年會考成績可以查詢了!你的分數算優秀嗎?
    不用再等就是現在趕快查查看你的會考成績點這裡☟☟
  • php程式設計師看過來,這老外是在吐糟你嗎?看看你中了幾點!
    程式設計師之間的鄙視鏈是不是挺有意思,當然這中間更多的是調侃性質多一點,並不那麼認真,還有那個「PHP是最好的語言」,這個又是什麼梗,反正這些東西都快被大家玩壞了,今天咱不妨來一個特別的,到處逛了逛,翻了翻,發現一個老外的一段話挺有意思,就給他分享給大家,現在截圖出來,大家可以仔細品一品其中意思
  • 教師資格證面試一般會問哪些問題?
    教師資格證面試一般會問什麼問題呢?教師資格證面試有兩個提問環節,一個是結構化面試,時間為5分鐘,一個是答辯,時間同樣為5分鐘。下面環球青藤小編帶各位來看看教師資格證面試題目一般有哪些?教師資格證面試的第一個環節就是結構化面試。
  • PHP面試題
    怎樣選擇設計模式考慮設計模式是怎樣設計問題的、瀏覽模式的意圖部分、研究模式怎樣互相關聯、研究目的相似的模式、檢查重新設計的原因、考慮你的設計中哪些是可變的,而它的接口不符合你的需求 你想創建一個可以復用的類,改類可以與其他不相關的類或不可預見(可能不兼容)的類協同工作 你想使用一些已經存在的子類,但是不可能對每一個都進行子類化以匹配它們的接口
  • 考研英語面試中,該重點關注哪些問題?
    在考研複試中,雖然考生們都做了萬全的準備,但是對於英語科目還是不能有一絲懈怠,尤其是在面試中,考生要做好充分的備考準備。今天呢,小編來為大家分享一些英語面試中考生重點關注的事項吧。1、複試中聽力是必考的嗎?
  • PHP面試題:put與post的區別
    這道題面試者面試結果大概可以分以下幾種:1. 不知道存在put這種方式http協議規定了四種資源訪問形式:get、post、put、delete。不知道區別,那put與post有哪些區別呢從方法語義是不同的,put是上傳資源,post是修改資源, 但是實際使用中,無論是上傳還是修改,我們還是post方法提交請求頭報文不同: post方式:post /index.php http/1.1
  • php數據類型有哪些?
    本篇將介紹php數據類型有哪些?有興趣的朋友可以了解一下!一、前言php是一門很受歡迎的程式語言,而且簡單易學,因此迎來了很多自學者,小編也是其中一個。每一門程式語言都有自己的數據類型,php也不例外,也有自己的數據類型。但是php和其它語言不一樣,它是一門弱語言,在聲明變量的時候不需要指定數據類型。
  • 2020年國考面試會考哪些題?結構化面試中最常考的11種題型你會?
    今年2020年國考筆試環節結束後緊接著就到了面試環節,相信了解過公務員考試的同學們對於這幾個名詞一點也不陌生,他們分別是「無領導」「結構化」「半結構化」「結構化小組討論」這四大名詞其實就是面試的四個不同的形式,那麼這四種考察形式都運用在哪些崗位又有哪些備考技巧呢?
  • 論文查重查哪些內容?
    這這一切的前提是能夠順利通過畢業答辯拿到畢業證,但寫畢業論文要通過論文查重檢測卻難倒了很多同學,很多同學還不知道論文查重查什麼?論文致謝需要進行論文查重嗎?現在小編和大家普及一下,讓同學們可以有點準備。
  • 2019年最新PHP經典面試題及答案,PHP程式設計師必看
    源 / php中文網      源 / www.php.cn2019年最新PHP經典面試題及答案,PHP程式設計師必看.1、用最少的代碼寫一個求3值最大值的函數.相當於 error_reporting('E_ALL'); 輸出所有的錯誤7、打開php.ini中的Safe_mode,會影響哪些參數?至少說出6個。
  • 背景調查一般在什麼時候開始做?誰做?查哪些內容?
    你可以想想看,新公司何時以及為什麼要調查你的背景呢。此外,HR有多大的權限?他她能查到你的啥背景資料呢?他她調查的動力有多大,能承受什麼樣的成本?這幾點解決了,這個HR背景調查的問題,就迎刃而解了。好的,我們一個一個來。大家注意下,都是乾貨。
  • php面試題之—PHP核心技術(高級部分)
    >2.寫出smarty模板的特點(新浪網技術部)速度快,編譯型,緩存技術,插件機制,強大的表現邏輯3.打開php.ini中的safe_mode,會影響哪些函數?至少說出6個。(新浪)safe_mode,php安全模式,它提供一個基本安全的共享環境,在一個有多個用戶帳戶存在的php開發的web伺服器上。
  • 2021中央遴選面試內容是什麼 該如何準備
    2021中央遴選面試內容是什麼 該如何準備 2021中央遴選面試內容是什麼 該如何準備2021中央機關遴選和選調公務員考試已經快要發布成績了,在公告中通知成績查詢在1月,知道成績那麼面試也距離我們不遠了,2021中央遴選面試內容是什麼
  • PHP面試題集
    session_set_cookie_params 17、有一個網頁地址, 比如PHP研究室主頁: http://www.phpv.net/index.html,如何得到它的內容?($1分)file_get_contentscurl18、在HTTP 1.0中,狀態碼401的含義是(?)