php面試知識點總結

      網友投稿 691 2025-04-01

      1.PHP 優先級

      $a = 0;

      $a = (2 > 2) ? 2 : 3 ? $a++ : --$a;

      //解析:( false ? 2 : 3) ? $a++ : --$a

      // 3 ? $a++ : --$a

      var_dump($a);//0

      echo "
      ";

      $a = (2 > 2) ? 2 : 3 ? ++$a : --$a;

      var_dump($a);//1

      echo "
      ";

      $a = true ? 0 : true ? 1 : 2;// (true ? 0 : true) ? 1 : 2 = 2 左結合

      var_dump($a);//0

      $a = 1;

      $b = 2;

      $a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5 右結合

      $a = 1;

      echo $a + $a++; //3

      優先級詳情:https://www.php.net/manual/zh/language.operators.precedence.php

      2.從mysql 數據庫中隨機取出一條記錄

      方法1:

      select * from 表名 order by rand( ) limit 1; //此處的1就是取出數據的條數

      但這樣取數據網上有人說效率非常差的,那么要如何改進呢

      搜索Google,網上基本上都是查詢max(id) * rand()來隨機獲取數據。

      方法2:

      SELECT *

      FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `table`)) AS id) AS t2

      WHERE t1.id >= t2.id

      ORDER BY t1.id ASC LIMIT 5;

      但是這樣獲得的是5條連續的記錄。解決辦法只能是每次查詢一條,查詢5次,但這個又不能滿足我的要求了,我要一次找幾條

      方法3: 高效寫法

      SELECT * FROM user WHERE userId >= ((SELECT MAX(userId) FROM user )-(SELECT MIN(userId) FROM user )) * RAND() + (SELECT MIN(userId) FROM user ) LIMIT 5

      個人感覺:方法3和方法2區別不大.

      3.用php寫一段代碼,實現不適用第3個變量,變換$a,$b的值,$a,$b初始值自己定

      方法1:簡潔易懂 ,沒得說,頂上

      list($a, $b) = array($b, $a);

      方法二:兩個變量必須是數字

      $a=5; $b=7;

      $a = $a + $b;

      $b = $a - $b;

      $a = $a - $b;

      echo $a,$b;//7 5

      方法3:(這個就比較有限制,必須用一個兩個字符串都都不能出現的字符做為分隔符)

      $a = $b.','.$a ;

      $a = explode(',', $a);

      $b = $a[1];

      $a = $a[0];

      方法4:可能存在編碼問題

      $a = $a . $b;

      $b = strlen( $b );

      $b = substr( $a, 0, (strlen($a) - $b ) );

      $a = substr( $a, strlen($b) );

      方法5:兩個變量的長度必須一樣

      $a = $a^$b;

      $b = $b^$a;

      $a = $a^$b;

      4.char/varchar 區別,誰的存儲速度快,為何?

      一.數據存儲開銷

      1.char(n) 是定長的,也就是當你輸入的字符小于你指定的數目時,char(8),你輸入的字符小于8時,它會再后面補空值。當你輸入的字符大于指定的數時,它會截取超出的字符。

      在程序中,會返回給你8位,后面的用空格補上;

      在數據庫中,char(8),占用16個字節(1個字符=2個字節);

      2.varchar(n) 是長度為 n 個字節的可變長度且非 Unicode 的字符數據。n必須是一個介于1和 8000之間的數值。存儲大小為輸入數據的字節的實際長度,而不是 n 個字節。所輸入的數據字符長度可以為零。

      二.插入數據

      1.char列的NULL值占用存儲空間。

      varchar列的NULL值不占用存儲空間。

      插入同樣數量的NULL值,varchar列的插入效率明顯高出char列。

      插入不為null的數據時,無論插入數據涉及的列是否建立索引,varchar列的插入效率也是明顯高出char列。

      三.更新數據

      如果更新的列上未建立索引,則char的效率低于varchar,但效率差異不大。

      如果更新的列上建立索引,則char的效率低于varchar,并且效率差異很大。

      php面試知識點總結

      四.修改結構

      無論增加或刪除的列的類型是char還是varchar,操作都能較快的完成,而且效率上沒有什么差異。

      對于增加列的寬度而言,char與varchar有非常明顯的效率差異,varchar列基本上不花費時間,而修改char列需要花費很長的時間。

      五.數據檢索

      無論是否通過索引,varchar類型的數據檢索略優于char的掃描。

      那實際開發中,我們使用哪種呢?

      當確定字符串為定長、數據變更頻繁、數據檢索需求少時,使用char;

      當不確定字符串長度、對數據的變更少、查詢頻繁時,使用varchar。

      5.解釋什么是隊列(queue),棧(stack),有何區別,php哪些數組結合可以實現隊列和棧?

      棧(Stack)和隊列(Queue)是兩種操作受限的線性表。

      棧與隊列的相同點:

      1.都是線性結構。

      2.插入操作都是限定在表尾進行。

      3.都可以通過順序結構和鏈式結構實現。、

      4.插入與刪除的時間復雜度都是O(1),在空間復雜度上兩者也一樣。

      5.多鏈棧和多鏈隊列的管理模式可以相同。

      棧與隊列的不同點:

      1.刪除數據元素的位置不同,棧的刪除操作在表尾進行,隊列的刪除操作在表頭進行。

      2.應用場景不同;常見棧的應用場景包括括號問題的求解,表達式的轉換和求值,函數調用和遞歸實現,深度優先搜索遍歷等;常見的隊列的應用場景包括計算機系統中各種資源的管理,消息緩沖器的管理和廣度優先搜索遍歷等。

      3.順序棧能夠實現多??臻g共享,而順序隊列不能。

      PHP實現棧和隊列:

      array_shift : 刪除數組中首個元素,并返回被刪除元素的值。

      array_unshift : 在數組開頭插入一個或多個元素。

      array_pop:刪除數組的最后一個元素(出棧)。

      array_push:將一個或多個元素插入數組的末尾(入棧)。

      6.php 開發sdk注意什么?

      7.linux 查看進程的命令?

      ps -A 或者 ps -e

      8.PHP多線程開發

      9.每天凌晨2:00 的定時任務

      # 每天早上6點

      0 6 * * * echo "Good morning." >> /tmp/test.txt //注意單純echo,從屏幕上看不到任何輸出,因為cron把任何輸出都email到root的信箱了。

      # 每兩個小時

      0 */2 * * * echo "Have a break now." >> /tmp/test.txt

      # 晚上11點到早上8點之間每兩個小時和早上八點

      0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt

      # 每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點

      0 11 4 * 1-3 command line

      # 1月1日早上4點

      0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出現錯誤,或者有數據輸出,數據作為郵件發給這個帳號 HOME=/

      # 每小時(第一分鐘)執行/etc/cron.hourly內的腳本

      01 * * * * root run-parts /etc/cron.hourly

      # 每天(凌晨4:02)執行/etc/cron.daily內的腳本

      02 4 * * * root run-parts /etc/cron.daily

      # 每星期(周日凌晨4:22)執行/etc/cron.weekly內的腳本

      22 4 * * 0 root run-parts /etc/cron.weekly

      # 每月(1號凌晨4:42)去執行/etc/cron.monthly內的腳本

      42 4 1 * * root run-parts /etc/cron.monthly

      # 注意: "run-parts"這個參數了,如果去掉這個參數的話,后面就可以寫要運行的某個腳本名,而不是文件夾名。

      # 每天的下午4點、5點、6點的5 min、15 min、25 min、35 min、45 min、55 min時執行命令。

      5,15,25,35,45,55 16,17,18 * * * command

      # 每周一,三,五的下午3:00系統進入維護狀態,重新啟動系統。

      00 15 * *1,3,5 shutdown -r +5

      # 每小時的10分,40分執行用戶目錄下的innd/bbslin這個指令:

      10,40 * * * * innd/bbslink

      # 每小時的1分執行用戶目錄下的bin/account這個指令:

      1 * * * * bin/account

      # 每天早晨三點二十分執行用戶目錄下如下所示的兩個指令(每個指令以;分隔):

      203 * * * (/bin/rm -f expire.ls logins.bad;bin/expire$#@62;expire.1st)

      10.統計文件的行數

      wc 命令的作用:統計指定文件中的字節數、字數、行數,并將結果顯示輸出。

      命令語法:wc [選項] 文件

      該命令選項參數如下:

      -c 統計字節數

      -l 統計行數

      -w 統計字數

      -m 統計字符數

      以上選項可以單獨使用也可以組合使用。注意組合使用時輸出結果的列的順序和數目不受選項的順序和數目的影響。輸出結果總是按下述順序進行顯示的。

      行數 字數 字節數 文件名

      例如:

      wc -lcw file1 file2

      則輸出結果為:

      9 36 file1

      8 62 file2

      8 24 96 total

      省略任選項-lcw,wc命令的執行結果與上面是一樣的。

      以上選項也可以單獨使用,例如:

      wc -l filename 輸出 filename 的行數

      wc -c filename 輸出 filename 的字節數

      wc -m filename 輸出 filename 的字符數

      wc -w filename 輸出 filename 的單詞數

      wc -L filename 輸出 filename 文件里最長的那一行是多少個字符數

      示例

      統計當前文件夾下的php文件數目

      find . -name “*.php” |wc -l

      統計當前目錄下所有py文件代碼行數:

      find ./ -name “*.php” | xargs cat |wc -l

      MySQL PHP

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:關于單元格和區域引用(一個單元格引用一個區域內容)
      下一篇:excel表格如何將圖片導出來
      相關文章
      亚洲综合久久夜AV | 亚洲国产精品成人精品小说| 亚洲人成7777影视在线观看| 亚洲三级电影网站| 久热综合在线亚洲精品| 亚洲精品乱码久久久久久久久久久久| 亚洲人成网站色在线入口| 国产亚洲精品美女2020久久| 亚洲GV天堂GV无码男同| 亚洲色少妇熟女11p| 亚洲欧美不卡高清在线| 亚洲国产精华液2020| 亚洲AV综合永久无码精品天堂| 亚洲av纯肉无码精品动漫| 怡红院亚洲红怡院在线观看| 亚洲av永久无码天堂网| 成人婷婷网色偷偷亚洲男人的天堂 | 免费亚洲视频在线观看| 国产精品亚洲天堂| 亚洲成av人片不卡无码久久| 亚洲国产一级在线观看 | 亚洲AV无码一区二区二三区软件| 国产精品亚洲产品一区二区三区| 中文字幕亚洲一区二区三区 | 区久久AAA片69亚洲| 亚洲色WWW成人永久网址| 久久九九亚洲精品| 亚洲国产精品人久久| 97亚洲熟妇自偷自拍另类图片| 亚洲美女自拍视频| 亚洲AV无码一区二区三区在线| 亚洲国产成人精品无码区在线秒播 | 国产成人精品日本亚洲专区61| 亚洲精品字幕在线观看| 亚洲av日韩av无码黑人| 精品亚洲麻豆1区2区3区| 亚洲中文字幕无码av在线| 亚洲色欲色欲www在线播放 | 亚洲AV无码成人专区片在线观看| 91亚洲精品第一综合不卡播放| 亚洲a级片在线观看|