工作要求:
- 協助完成後端服務器架構優化、模塊測試
- 熟悉thinkphp5.0(看tp5文檔函數、PHP函數)
- 熟悉Linux;熟悉MySQL及Redis相關技術(複習Linux mysql語句)
- 對高併發、高可用架構有了解(??)
PHP函數篇
-
處理數組:
1、求組中最大數和最小數:max ( array $values ) /min ( array $values );
2、從小到大排序數組/從大到小排序數組:sort(array $arr) / rsort(array $arr);
3、出棧 / 進棧 : array_pop(array $arr);(刪除並返回最後一個數組) ; array_push(array $arr, mixed $value1 );將一些東西進棧。
4、切割和合並:array_slice(array $arr,int $star,int arr1,$arr1);(ps:array_merge使用:當有重複的鍵名時,值會被覆蓋);合併:array_merge_recursive(); (PS:當有重複的鍵名時,值不會會被覆蓋)
5、查詢數組位置:array_search(“str”, $arr);
6、查詢數組中是否存在鍵: array_key_exists ( ‘first’ , $search_array )(放回boolean)
7、計算數組總數:array_sum( $arr);
8、移除數組中的重複值:array_unique( $arr);
9、檢查數組中是否有某個值:in_array("", $arr);
10、 print_r() 函數可以打印輸出整個數組內容及結構,按照一定格式顯示鍵和元素。注意 print_r() 函數不僅是隻用於打印,實際它是用於打印關於變量的易於理解的信息。
11、var_dump() 函數也可以用於打印數組的數據及結構。不過 var_dump() 函數功能比 print_r() 更強大,可以同時打印多個變量且給出變量的類型信息
12、array_count_values() 函數用於統計數組中所有的值出現的次數,返回一個數組,其元素的鍵名是原數組的值,鍵值是該值在原數組中出現的次數 -
處理字符串
PHP處理字符串的常用函數?(重點看函數的‘參數’和‘返回值’)
①trim()移除字符串兩側的空白字符和其他字符;②substr_replace()把字符串的一部分替換爲另一個字符串;③substr_count()計算子串在字符串中出現的次數;④substr()返回字符串的一部分;⑤strtolower()把字符串轉換爲小寫字母;⑥strtoupper()把字符串轉換爲大寫字母;⑦strtr()轉換字符串中特定的字符;⑧strrchr()查找字符串在另一個字符串中最後一次出現;⑨strstr()查找字符串在另一字符串中的第一次出現(對大小寫敏感);strrev()反轉字符串;strlen()返回字符串的長度;str_replace()替換字符串中的一些字符(對大小寫敏感);print()輸出一個或多個字符串;explode()把字符串打散爲數組;is_string()檢測變量是否是字符串;strip_tags()從一個字符串中去除HTML標籤;mb_substr()用來截中文與英文的函數
- 其他函數
1、 isset()使用::bool isset ( mixed var );
若變量不存在則返回 FALSE
若變量存在且其值爲NULL,也返回 FALSE
若變量存在且值不爲NULL,則返回 TURE
2、
基礎知識篇
1、0=null=false=‘0’=‘’;
原因是在PHP中變量是以C語言的結構體來存儲的,空字符串和NULL,false都是以值爲0存儲的;
老調重提的面試知識點
-
Get與post的區別
-
Get從服務器獲取數據,post向服務器提交、修改數據
-
Get傳值在url中可見,post在url中不可見
-
Get傳值一般在2KB以內,post傳值大小可以在php.ini中進行設置
-
get安全性低,post安全性較高,執行效率卻比Post高
-
數據庫查詢優化:
①優化SQL語句,查詢語句中儘量不使用select *,用哪個字段查哪個字段;少用子查詢可用表連接代替;少用模糊查詢;②數據表中創建索引;③對程序中經常用到的數據生成緩存; -
Print、echo、print_r有什麼區別?
① echo和print都可以做輸出,不同的是,echo不是函數,沒有返回值,而print是一個函數有返回值,所以相對而言如果只是輸出echo會更快,而print_r通常用於打印變量的相關信息,通常在調試中使用。
② print 是打印字符串
③ print_r 則是打印複合類型 如數組 對象
- SESSION與COOKIE的區別?
①存儲位置:session存儲於服務器,cookie存儲於瀏覽器
②安全性:session安全性比cookie高
③session爲‘會話服務’,在使用時需要開啓服務,cookie不需要開啓,可以直接用
編程篇
1、求斐波那契數組(1、2、3、5、8…):
function arrFibo($len){
$arr[0] = 0;
$arr[1] = 1;
for($i=2;$i<$len;$i++){
$arr[$i] = $arr[$i-1]+$arr[$i-2];
}
return $arr;
}
print_r(arrFibo(10));
2、數組逆序( 不能使用rsort、array_reverse函數)
$arr = array("a","b","c",1,10);
4 $i = "";//要替換位置的數的下標
5 $j = "";//臨時變量
6 $k = "";//被替換位置的數的下標
7
8 $len = count($arr);
9 $half_len = floor($len/2);//向下取整,取整的值是循環的次數
10
11 for($i=0;$i<$half_len;$i++){
12
13 $j = $arr[$i];
14
15 //判斷數組個數奇偶
16 if($len%2!=0){ //奇數
17
18 $k = $half_len*2-$i;
19 }else{
20
21 //偶數
22 $k = $half_len*2-$i-1;
23 }
24
25 $arr[$i] = $arr[$k];
26 $arr[$k] = $j;
27 }
28
29 echo "<pre>";
30 print_r($arr);
31 echo "</pre>";
排序的五大算法:冒泡排序
<?php
$arr = array(1,3,2,9,5,4);
function maopao($a){
$num = count($a);
for($i = 0;$i<$num;$i++)
{
for($j = $i+1;$j<$num;$j++)
{
if($a[$i]>$a[$j])
{
$temp = $a[$i];
$a[$i] = $a[$j];
$a[$j] = $temp;
}
}
}
return $a;
}
print_r(maopao($arr));
?>