php記錄已經點擊過,最近一次的PHP面試題記錄,office已到手!

1、explain 具體哪些等級

具體有 system、const、range、index、all

2、MySQL 優化

避免全表查詢,首先應考慮在 where 及 order by 涉及的列上建立索引

應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描 (可以將字段默認值設置為 0)

應盡量避免在 where 子句中使用!= 或 <> 操作符,否則引擎將放棄使用索引而進行全表掃描

應盡量避免在 where 子句中使用 or 來連接條件,否則將導致引擎放棄使用索引而進行全表掃描,如:select id from t where num=10 or num=20 可以這樣查詢:select id from t where num=10 union all select id from t where num=20

n 和 not in 也要慎用,否則會導致全表掃描,如:select id from t where num in (1,2,3) 對于連續的數值,能用 between 就不要用 in 了:select id from t where num between 1 and 3

下面的查詢也將導致全表掃描:select id from t where name like ‘% 李 %’若要提高效率,可以考慮全文檢索。

應盡量避免在 where 子句中對字段進行表達式操作,這將導致引擎放棄使用索引而進行全表掃描

不要在 where 子句中的 “=” 左邊進行函數、算術運算或其他表達式運算

在使用索引字段作為條件時,如果該索引是復合索引,那么必須使用到該索引中的第一個字段作為條件時才能保證系統使用該索引,否則該索引將不會被使用,并且應盡可能的讓字段順序與索引順序相一致。

很多時候用 exists 代替 in 是一個好的選擇:select num from a where num in (select num from b)

用下面的語句替換:

select num from a where exists(select 1 from b where num=a.num)

索引并不是越多越好,索引固然可 以提高相應的 select 的效率,但同時也降低了 insert 及 update 的效率,因為 insert 或 update 時有可能會重建索引,所以怎樣建索引需要慎重考慮,視具體情況而定。一個表的索引數最好不要超過 6 個,若太多則應考慮一些不常使用到的列上建的索引是否有 必要。

任何地方都不要使用 select from t ,用具體的字段列表代替 “”,不要返回用不到的任何字段。

盡量避免大事務操作,提高系統并發能力.

分庫分別

分區分表分庫

3、redis 支持哪些類型

支持 5 種類型:字符串、哈希、鏈表、有序、無序,最新的 redis 5.0 中,新增 stream 類型,非常高效的支持隊列。

4、PHP7 與 php5 的區別

foreach 不再改變內部數組指針

標量類型聲明,在舊版中,函數的參數申明只能是 (Array

math?formula=arr)%E3%80%81(CLassNameobj) 等,基本類型比如字符串 (string), 整數 (int), 浮點數 (float), 以及布爾值 (bool) 等是不能夠被申明的

增加了對返回類型聲明的支持

declare(strict_types=1);

function add(int $a, int $b){

return $a+$b;

}

echo add(1,2);

echo add(1.5, 2.6);

null 合并運算符

項目中存在大量同時使用三元表達式和 isset () 的情況,新增了 null 合并運算符 (??) 這個語法糖。如果變量存在且值不為 NULL, 它就會返回自身的值,否則返回它的第二個操作數。

舊版:isset (

math?formula=_GET%20%5B%E2%80%98id'%5D)%20%3F_GET [id] : err;

新版:$_GET ['id'] ?? 'err';

通過 define () 定義常量數組

在 PHP 5.6 中僅能通過 const 定義常量數組,PHP 7 可以通過 define() 來定義。

define('ANIMALS',

['dog', 'cat', 'bird']);

echo ANIMALS[1];

// outputs "cat"

const name = ['1','2'];

echo name[1];

現在支持通過 new class 來實例化一個匿名類,這可以用來替代一些 “用后即焚” 的完整類定義

preg_replace_callback_array()

? 新增了一個函數 preg_replace_callback_array (),使用該函數可以使得在使用 preg_replace_callback () 函數時代碼變得更加優雅。在 PHP7 之前,回調函數會調用每一個正則表達式,回調函數在部分分支上是被污染了。

5、指針問題

$array = [1,2,3];

foreach ($array as $k=>&$v){

$v++;

}

var_dump($array);

foreach ($array as $k=>$v){

echo $v;

}

233

6、array_column()

返回輸入數組中某個單一列的值。

array_column(array,column_key,index_key);

// 可能從數據庫中返回數組

$a = array(

array(

'id' => 5698,

'first_name' => 'Peter',

'last_name' => 'Griffin',

),

array(

'id' => 4767,

'first_name' => 'Ben',

'last_name' => 'Smith',

),

array(

'id' => 3809,

'first_name' => 'Joe',

'last_name' => 'Doe',

)

);

$last_names = array_column($a, 'last_name', 'id');

print_r($last_names);

?>

結果

Array

(

[5698] => Griffin

[4767] => Smith

[3809] => Doe

)

7、取出前五通話記錄

select name,count(*) as num from order

where date_sub(curdate(), INTERVAL 10 DAY) <= date(`created_at`)

group by name

order by num desc

limit 10;

8、php 擴展安裝

//下載libevent擴展文件壓縮包(在當前系統哪個目錄下載隨意)

~# wget http://pecl.php.net/get/libevent-0.1.0.tgz

//解壓文件

~# tar -zxvf libevent-0.1.0.tgz

//進入源碼目錄

~# cd libevent-0.1.0/

//運行phpize命令,寫全phpize的路徑

~# /usr/local/php/bin/phpize

//運行configure命令,配置時 要將php-config的路徑附上

~# ./configure --with-php-config=/usr/local/php/bin/php-config

//運行make命令

~# make

//測試編譯安裝

~# make test

//正式編譯安裝

~# sudo make install

//修改php.ini,結尾加入:extension=libevent.so

//重啟對應的php-fpm

9、session 和 cookie 的關系

前提是服務端開啟了session

1. 第一次訪問頁面時, 服務端生成一個不重復的sessionid(當前會話id)以及命名為sess_xxx的session文件

該session文件保存在php.ini文件中指定的目錄, xxx是sessionid, sessionid可以通過session_id()函數來獲取

2. 服務端向客戶端返回響應, 其中有響應頭Set-Cookie:PHPSESSID=xxx

3. 客戶端收到Set-Cookie響應頭, 將sessionid寫入cookie, cookie的key為PHPSESSID, value為sessionid

比如PHPSESSID=jlis2mcmv6d5hejkemom77ibm3

4. 當第二次訪問頁面時, 客戶端會把cookie放在請求頭(Request Header)中, 服務端識別PHPSESSID這個cookie

然后根據這個cookie獲取當前會話ID(sessionid), 從而找到對應的session文件, 再從session文件中讀取信息

10、jsonp 原理

11、ajax 跨域

12、主從復制的原理

13、運算符優先級問題

$tmp = 0 == 'a' ? 1: 2;

echo $tmp;

?>

點關注,不迷路

好了各位,以上就是這篇文章的全部內容了,能看到這里的人呀,都是人才。之前說過,PHP方面的技術點很多,也是因為太多了,實在是寫不過來,寫過來了大家也不會看的太多,所以我這里把它整理成了PDF和文檔,如果有需要的可以

07e80527e2b1

在這里插入圖片描述

07e80527e2b1

在這里插入圖片描述

以上內容希望幫助到大家,很多PHPer在進階的時候總會遇到一些問題和瓶頸,業務代碼寫多了沒有方向感,不知道該從那里入手去提升,對此我整理了一些資料,包括但不限于:分布式架構、高可擴展、高性能、高并發、服務器性能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點高級進階干貨需要的可以免費分享給大家,需要的可以加入我的

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259513.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259513.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259513.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

原生Ajax講解

典型的http通信&#xff1a;瀏覽器向服務器發出請求&#xff0c;服務器向客戶端返回響應&#xff0c;瀏覽器重新加載頁面&#xff0c;這種不連續的頁面加載方式導致用戶的體驗變得雜亂&#xff0c;缺乏連貫性。 如&#xff1a; 在一般的web應用程序中&#xff0c;用戶填寫表單字…

16、Python與設計模式--模板模式

一、股票查詢客戶端 投資股票是種常見的理財方式&#xff0c;我國股民越來越多&#xff0c;實時查詢股票的需求也越來越大。今天&#xff0c;我們通過一個簡單的股票查詢客戶端來認識一種簡單的設計模式&#xff1a;模板模式。根據股票代碼來查詢股價分為如下幾個步驟&#xff…

避免濫用子選擇器

CSS的選擇符是有權重的&#xff0c;當不同選擇符的樣式設置有沖突時&#xff0c;會采用權重高的選擇符設置的樣式。 如果CSS選擇符權重相同&#xff0c;那么樣式會遵循就近原則&#xff0c;哪個選擇符最后定義&#xff0c;就采用哪個選擇符的樣式。 如果忽略了CSS選擇符權重&am…

C++中的空類,默認產生哪些類成員函數?

class Empty { public:/*Empty();//默認構造函數Empty(const Empty& rhs);//拷貝構造函數~Empty();//析構函數Empty& operator(const Empty& rhs);//賦值函數Empty* operator&();//取地址運算符const Empty* operator&() const;//取址運算符 const */ prot…

php exist echo,PHP函數file_exists介紹

&#xfeff;定義和用法file_exists() 函數檢查文件或目錄是否存在。如果指定的文件或目錄存在則返回 true&#xff0c;否則返回 false。exists中文翻譯為存在的意思。語法file_exists(path)例子Example #1<?phpecho file_exists("test.txt");?>輸出&#x…

閉包應用之延遲函數setTimeout

根據HTML 5標準&#xff0c;setTimeout推遲執行的時間&#xff0c;最少是5毫秒。如果小于這個值&#xff0c;會被自動增加到5ms。 每一個setTimeout在執行時&#xff0c;會返回一個唯一ID&#xff0c;把該ID保存在一個變量中&#xff0c;并傳入clearTimeout&#xff0c;可以清除…

并行編程2——多核體系架構

1.1 多核處理器定義 多內核處理器架構是指&#xff1a;芯片設計工程師在單個處理器中集成兩個或多個 “執行內核&#xff08;即計算引擎&#xff09;”。多內核處理器可直接插入到單一處理器基座中。但是&#xff0c;操作系統會把它的每個執行內核作為獨立的邏輯處理器&#x…

21:蘋果和蟲子2

團隊QQ&#xff1a;466373640個人博客&#xff1a;www.doubleq.winc/noi/信息學奧數博客&#xff1a;http://www.cnblogs.com/zwfymqz 1:蘋果和蟲子2 查看提交統計提問總時間限制:1000ms內存限制:65536kB描述你買了一箱n個蘋果&#xff0c;很不幸的是買完時箱子里混進了一條蟲子…

php運行代碼運行退出為0,php – Selenium測試用例返回進程以退出代碼0結束

你使用“phpunit yourTestCase.php”而不是“php yourTestCase.php”嗎&#xff1f;我使用phpunit(3.5.14)和“selenium-server-standalone-2.0rc2.jar”運行你的testfile,沒有問題(除了測試本身失敗)&#xff1a;PHPUnit 3.5.14 by Sebastian Bergmann.ETime: 10 seconds, Mem…

Xcode6中使用initWithTitle:title image:image selectedImage:自定義圖片

使用xcode6來運行項目&#xff0c;發現使用原生的tabbar上的圖片不顯示了。這個問題是因為xcode6中的一些api方法被廢棄了,同時tabbar上圖片的渲染方式發生了改變。先看xcode6中的tabbar api方法的變更&#xff1a;- (void)setFinishedSelectedImage:(UIImage *)selectedImage …

[Node.js]get/post請求

摘要 在很多情況下&#xff0c;我們的web服務器都需要接受客戶端瀏覽器傳遞的參數或者數據。最常見的是get和post請求。 獲取get請求的內容 get請求傳遞的參數在url中&#xff0c;參數部分在?后面。因此可以手動解析后面的內容作為get請求的參數。node.js中url模塊中的parse函…

MyEclipse10 Tomcat7 JDK1.7 配置

第一步.MyEclipse10 Tomcat7 JDK1.7下載 MyEclipse10http://downloads.myeclipseide.com/downloads/products/eworkbench/indigo/installers/myeclipse-10.0-offline-installer-windows.exe Tomcat http://tomcat.apache.org/ Java SE Development Kit 7 WINDOWS版 http://www…

類的靜態成量變量必須初始化

因為類的靜態成員變量是所有實例共用的.所以得在類外初始化. 調用的時候可以通過對象調用,也可以通過類直接調用 classA { public: inti; //有默認值}; classB { public: staticintn;staticA Aobj;}; intB::n 1; //靜態成員變量的初始化A B::Aobj; //靜態…

2階節IIR算法C語言源碼

純C語言軟件算法&#xff0c;沒有做過多優化&#xff0c;只是實現了基本IIR算法 /****************************************************************************** * 二階IIR濾波器單元,采用直接II型 * 由多個2階節&#xff0c;可以組成更多高階的濾波器 * 根據參數的不同&a…

HDU 3709 Balanced Number (數位DP)

題意 求出[x, y] 范圍內的平衡數&#xff0c;平衡數定義為&#xff1a;以數中某個位為軸心&#xff0c;兩邊的數的偏移量為矩&#xff0c;數位權重&#xff0c;使得整個數平衡。 思路 外層枚舉平衡點&#xff0c;然后數位DP即可。設計狀態&#xff1a; dp[pos][o][left_right] …

跳過 Windows RT的UI

RT啟動進入常規桌面 微軟Surface RT發布的時間已經不短了&#xff0c;相信很多朋友都已經熟悉了這個全新的平板&#xff0c;并且已經上手。Surface RT開機默認進入的界面為Windows UI&#xff0c;這對于經常使用App的朋友來說并沒有什么&#xff0c;但是對于那些經常使用Office…

matlab調用mstg,實驗五 雙線性變換法設計IIR數字濾波器

實驗五 IIR 數字濾波器設計一、實驗目的(1)熟悉用雙線性變換法設計IIR 數字濾波器的原理與方法&#xff1b;(2)學會調用MATLAB 信號處理工具箱中濾波器設計函數設計各種IIR 數字濾波器&#xff0c;學會根據濾波需求確定濾波器指標參數。(3)掌握IIR 數字濾波器的MATLAB 實現方法…

Android知識點剖析系列:深入了解layout_weight屬性

前言 Android中layout_weight這個屬性對于經常搗鼓UI的我們來說&#xff0c;肯定不會陌生。但是我們在真正使用這個屬性時&#xff0c;經常會出現一些莫名奇妙的布局效果&#xff1b;如果僅僅知其然而不知其所以然&#xff0c;一些意外的布局效果一定讓我們頗為頭疼。在本文中&…

C++ 中explicit的使用

C提供了關鍵字explicit&#xff0c;可以阻止不應該允許的經過轉換構造函數進行的隱式轉換的發生。聲明為explicit的構造函數不能在隱式轉換中使用。 C中&#xff0c; 一個參數的構造函數(或者除了第一個參數外其余參數都有默認值的多參構造函數)&#xff0c; 承擔了兩個角色。1…

BZOJ 1026 windy數 (數位DP)

題意 區間[A,B]上&#xff0c;總共有多少個不含前導零且相鄰兩個數字之差至少為2的正整數&#xff1f; 思路 狀態設計非常簡單&#xff0c;只需要pos、limit和一個前驅數pre就可以了&#xff0c;每次枚舉當前位時判斷是否與上一位相差2即可。一個需要注意的地方是第一位不用比較…