2019.3.15 PHP面試題準備(酷駭遊戲)

工作要求:

  • 協助完成後端服務器架構優化、模塊測試
  • 熟悉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 num);arraymerge(num); array_ merge(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));
?>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章