PHP中常見的面試題4(附答案)

来源:http://www.cnblogs.com/AngryBigCat/archive/2017/08/03/7277644.html
-Advertisement-
Play Games

1. echo count(“abcd”);輸出多少? 答案:4 2. 運行以下代碼後$a $b $c 分別是? 答案:false、0、0 4. 請用php的heredoc語法格式輸出:hello world! 5. $string = "abcdefg",那麼$string{4}的值是? 答案:e ...


1. echo count(“abcd”);輸出多少?

答案:4

 

2. 運行以下代碼後$a $b $c 分別是?

<?php
    $a=$b=$c=0;
    $a=$b && $c;

答案:false、0、0

 

4. 請用php的heredoc語法格式輸出:hello world!

<?php
      $v=”hello world”;
      $str=<<<EOT
      $v
EOT;
echo $str;

 

5. $string = "abcdefg",那麼$string{4}的值是?

答案:e

 

6. 簡述echo(),print(),print_r()的區別。

答案:echo()可以一次輸出多個值,多個值之間用逗號分隔。echo是語言結構,而不是真正的函數,因此不能作為表達式的一部分使用。

           print()是一個函數,用來列印一個值,如果字元串成功顯示則返回true,否則返回false

           print_r()是一個函數,用來列印一個值,值為字元串或數字進行簡單列印,而數組則以括起來的鍵和值列表形式顯示,並以Array開頭。

拓展:var_dump()是一個函數,用來顯示關於一個或多個表達式的結果信息,包括表達式的類型與值。數組將遞歸展開值,通過縮進顯示其結構。

 

7.用PHP寫出顯示客戶端IP與伺服器IP的代碼。

客戶端IP:echo $_SERVER[‘REMOTE_ADDR’];

或者echo getenv(‘REMOTE_ADDR’);

伺服器IP:echo $_SERVER[‘SERVER_ADDR’];

或者echo getenv(‘SERVER_ADDR’);

 

8、用正則表達式判斷$a是否是一個以半形逗號分隔的多個手機號碼組成的字元串,是輸出yes

<?php
      $math=“/((\d){11},)+/”;
      $str=”12345678901,12345678901”;
      if(preg_match($match,$str)){
        echo ‘yes’;
    }
?>  

 

9. 請定義一個名為MyClass的類,這個類只有一個靜態方法justDoIt。

class MyClass
{
      public static function justDoIt()
      {

      }
}

 

11. 寫出你知道的幾種設計模式,並用php代碼實現其中一種。

答案:單態模式、工廠模式、生成器模式、代理模式、迭代模式
單態模式舉例:
class test{
      private static $obj=null;
      private function __construct(){
            echo ‘第一次連接資料庫’;
    }
 
    public static function getInstance(){
           if(is_null(self::$obj)){
               self::$obj=new self();
               return self::$obj;
         }
     }
}

 

 

12. 打開php.ini中的Safe_mode,會影響哪些函數?

答案: chown()、chgrp()、chdir()、fopen()、rmdir()、copy()、link()、exec()

 

 

 

13. 請描述如下URL重寫規則的用意。

<IfModule mod_rewrite.c>

      RewriteEngine on

      RewriteCond %{REQUEST_FILENAME} !-f

      RewriteCond %{REQUEST_FILENAME} !-d

      RewriteBase /

      RewriteRule . /index.php [L]

</IfModule>

答案:將URL地址強制解析為./index.php

 

14. 你會用哪個函數設置當前內容的Content-Type?

header函數

       //定義編碼

       header(“Content-type:text/html;charset=utf-8”);

       //CSS

       header(“Content-type:text/css”);

       //JavaScript

       header(“Content-type:text/javascript”);

       //JPEG Image

       header(“Content-type:image/jpeg”);

       //GIF Image

       header(“Content-type:image/gif”);

       //PNG Image

       header(“Content-type:image/png”);

       //JSON

       header(“Content-type:application/json”);

       //PDF

       header(“Content-type:application/pdf”);

       //XML

       header(“Content-type:text/xml”);

       //ok

       header(“HTTP/1.1 200 OK”);

       //404

       header(‘HTTP/1.1 404 Not Found’);

       //設置地址被永久的重定向

       header(‘HTTP/1.1 301 Moved Permanently’);

       //轉到一個新地址

       header(‘Location:http://www.example.org/’);

       //文件延遲轉向

       header(‘Refresh:10;url=http://www.example.org/’);

       print ‘You will be redirected in 10 seconds’;

       //純文本格式

       header(‘Content-type:text/plain’);

 

15. Warning: Cannot modify header information - headers already sent by (output started at D:\src\init.php:7) in D:\src\init.php on line 10 通常什麼情況下php會報該警告信息?

答案:header(‘Content-type:text/html;charset=utf-8’)頭之前有任何輸出均會出現如下錯誤。

 

16. A通過頁面輸入用戶名abc和密碼123登錄到www.10086.cn,請寫出該次請求的HTTP協議報文(包括請求行、消息報頭、請求正文)。

答案:

Post  /login  HTTP/1.1

============

host: www.10086.cn

Content-Type: application/x-www-form-urlencoded

User-Agent: Mozilla/5.0(Windows;U;Windows NT 5.1;en-US;rv:1.7.6)

Content-length: 25

Refer: www.10086.cn

============

Username=abc&password=123

 

17. 寫一段php代碼遍歷某個目錄下的所有文件和子文件夾。

<?php
      function scandir($path){
        $files = array();
        $handle = opendir($path);
        if ($filename=@readdir($handle)) {
            if ($filename==’.’ || $filename==’..’) {
                continue;
            }
            if (is_dir($filename)){
                $files[$filename] = scandir($path.’/’.$filename);
       } else {
            $files[$filename] = $filename;
       }
      }
        return $files;
   }
?>

 

 

18. 查看磁碟空間使用率的linux命令是什麼?查看有哪些系統進程正在運行命令是什麼?監測linux性能(cpu,磁碟io,記憶體,網路等)都用到哪些命令?

答案:df、ps、top

 

19. linux下終止一個進程用什麼命令?打包壓縮和解包用什麼命令?建立軟連接的命令是?

答案:

     pkill -9 進程名或kill 進程號、

     tar zcvf和tar zxvf 

     ln 

 

20. 如果要求每隔5分鐘執行一次腳本five.php,如何實現?

答案:crontab –e

 */5 * * * *  php  five.php

 

21. mysql中varchar的最大長度是多少?用什麼類型的欄位存儲大文本?date和datetime和timestamp什麼區別?怎麼看資料庫中有哪些sql正在執行?

答案:

65535

text

區別:

1. 存儲空間不同

a) TIMESTAMP占用4個位元組

b) DATETIME占用8個位元組

2. 受時區影響

a) TIMESTAMP實際記錄的是1970-01-01 00:00:01到現在的數,受時區影響

b) DATETIME不受時區影響

3. 時間範圍不同

a) TIMESTAMP的時間範圍是:'1970-01-01 00:00:01' UTC ~ '2038-01-19 03:14:07' UTC

b) DATETIME的時間範圍是:'1000-01-01 00:00:00' ~ '9999-12-31 23:59:59'

4. 自動更新

TIMESTAMP類型在預設情況下,insert、update 數據時,TIMESTAMP列會自動以當前時間(CURRENT_TIMESTAMP)填充/更新。

 

show processlist;

 

22. MySQL資料庫的一個表:User

Name Tel Content Date

張三 13333663366 大專畢業 2006-10-11

張三 13612312331 本科畢業 2006-10-15

張四 021-55665566 中專畢業 2006-10-15

 

寫出如下操作的SQL語句:

(a) 有一新記錄(小王 13254748547 高中畢業 2007-05-06)請用SQL語句新增至表中

(b) 請用sql語句把張三的時間更新成為當前系統時間

(c) 請寫出刪除名為張四的全部記錄

答案:

(a)inser into User(Name,Tel,Content,Date) values(“小王”,12354748547,”高中畢業”,”2007-05-06”);

(b)update User set Date=date(now()) where User=”張三”;

(c)delete from User where User=”張三”;


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 上文簡單介紹了一下Entity FrameWork,這裡說一下EF的核心——edmx文件。 在VisualStudio中建立edmx文件(此例環境為VisualStudio2012) 1、新建—ADO.NET實體數據模型: 2、選擇數據模型時,因為我之前已經在資料庫中建立好表了,所以我們這裡先選擇從 ...
  • Entity Framework是以ADO.NET為基礎,面向數據的“實體框架”。以下簡稱EF。 它利用了抽象化數據結構的方式,將每個資料庫對象都轉換成應用程式對象 (entity),數據欄位都轉換為屬性 (property),關係則轉換為結合屬性 (association),讓資料庫的 E/R 模 ...
  • 測試代碼: ...
  • 下載地址為:http://npoi.codeplex.com/releases/view/616131 可以操作excel表,行,單元格內家及樣式等。 使用示例: using (FileStream fs = File.OpenRead(@"E:\a.xls")) //打開myxls.xls文件 { ...
  • https://netftp.codeplex.com/ 測試 https://github.com/hgupta9/FluentFTP ...
  • wcf操作cookie看似很簡單,如果不對Wcf研究一把還是很難的,基本上無從下手。 這裡上一圖 上面的結果,豈止是坑爹,簡直就是坑爹!!! 廢話不多說,直接上代碼: cookie讀取 cookie寫入 原理就是wcf 的 restful 是用[webget]或[webinvoke]針對operat ...
  • Socket Socket是什麼? 下麵來看一下網路的傳輸過程: 上面圖片顯示了網路傳輸的基本過程,傳輸是通過底層實現的,有很多底層,我們寫傳輸過程的時候,要知道所有的過程那就太複雜了,socket為我們封裝了底層的傳輸流程,讓我們直接可以在socket上直接實現數據交換。 socket本質:對底層 ...
  • 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 目錄(?)[+] 目錄(?)[+] 參考資料: http://263229365.iteye.com/blog/1040329 https://www.java.net/node/650758 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...