2019年的PHP面試,把天天面試的東西記錄下來。php
function getTree($data, $pid) {
$tree = [];
foreach($data as $value) {
// 父親找兒子
if ($value['parent_id'] == $pid) {
$value['children'] = getTree($data, $value['id']);
$tree[] = $value;
}
}
return $tree;
}
複製代碼
//第一種
function str_rev1($str) {
$newstr = '';
for($i = strlen($str); $i >= 0; $i --) {
$newstr .= $str{$i};
}
return $newstr;
}
//第二種
function str_rev2($str) {
$newstr = '';
$arr = str_split($str, 1);
foreach($arr as $value) {
$newstr = $value . $newstr;
}
}
//第三種
function str_rev3($str) {
$newstr = '';
if (strlen($str) <= 1) return $str;
$newstr .= substr($str, -1) . str_rev3(substr($str, 0, strlen($str) - 1));
}
複製代碼
$fp = fopen('a.txt', 'w+');
if (flock($fp, LOCK_EX)) {
// 得到寫鎖,寫數據
fwrite($fp, 'write something');
flock($fp, LOCK_UN);
} else {
echo 'file is locking'
}
fclose($fp);
複製代碼
mysql -h localhost -u root -p
複製代碼
mysqldump -u root -p person >d:\person.sql
複製代碼
union: 對結果進行並集操做,會自動壓縮重複的結果,同時會進行默認的結果排序。
union all: 對結果進行並集操做,直接所有顯示出來,不進行任何排序。
複製代碼
1.web資源防盜鏈
兩種方式防禦,一種是檢驗referer,一種用簽名算法,加載第三方模塊HttpAccessKeyModule實現防盜鏈。
2.減小http請求次數,由於HTTP協議規定請求只能串行發送,也就是一個一個發。
- css雪碧圖
- 合併js與css文件
- 圖片使用base64編碼
3. CDN加速
4. 資源壓縮
複製代碼
1. 動態語言靜態化
- 使用像smarty模板引擎
- 使用ob系列函數
2.數據緩存
複製代碼
1. 字段數據類型優化
- 儘可能避免null
- varchar儲存可變長字符串,char定長的,適合很短的字符串
- 知足存儲須要的狀況下使用最小的數據類型
2. 索引優化
3.SQL語句優化
- 少用select *
- 用外鏈接代替子查詢,儘可能用inner join
- 儘可能不要使用NOT IN和<>操做
4. 儲存引擎的優化
5.表結構設計優化
複製代碼
負載均衡
- 七層負載均衡(Nginx)
- 四層負載均衡(LVS/硬件設備)
複製代碼
// 查看3306是否被佔用
netstat -anp | grep 3306
//查看當前全部已經使用的端口狀況
netstat -nultp
複製代碼
1、區別:css
2、聯繫:前端
複製代碼