總結曾經作過的筆試題

訂單號生成規則
function build_order_no() {

return date('Ymd').substr(implode(NULL,array_map('ord',str_split(substr(uniqid(),7,13),1))),0,8);
}
var_dump(build_order_no());

Linux 經常使用命令 http://www.javashuo.com/article/p-sawqjgwr-bb.html

1.GET和POST區別? HTTP請求方式 GET POST PUT DELETE?php

  • GET在瀏覽器回退時是無害的,而POST會再次提交請求。html

  • GET產生的URL地址能夠被收藏,而POST不能夠。前端

  • GET請求會被瀏覽器主動cache,而POST不會,除非手動設置。mysql

  • GET請求只能進行url編碼,而POST支持多種編碼方式。linux

  • GET請求參數會被完整保留在瀏覽器歷史記錄裏,而POST中的參數不會被保留。nginx

  • GET請求在URL中傳送的參數是有長度限制的,而POST麼有。web

  • 對參數的數據類型,GET只接受ASCII字符,而POST沒有限制。正則表達式

  • GET比POST更不安全,由於參數直接暴露在URL上,因此不能用來傳遞敏感信息。redis

  • GET參數經過URL傳遞,POST放在Request body中。算法

(以上標準答案參考自w3schools)

GET和POST都是TCP鏈接。

GET產生一個TCP數據包;POST產生兩個TCP數據包。

對於GET方式的請求,瀏覽器會把http header和data一併發送出去,服務器響應200(返回數據);

而對於POST,瀏覽器先發送header,服務器響應100 continue,瀏覽器再發送data,服務器響應200 ok(返回數據)。

 

Http定義了與服務器交互的不一樣方法,最基本的方法有4種,分別是GET,POST,PUT,DELETE。URL全稱是資源描述符,咱們能夠這樣認爲:一個URL地址,它用於描述一個網絡上的資源,而HTTP中的GET,POST,PUT,DELETE就對應着對這個資源的查,改,增,刪4個操做。到這裏,你們應該有個大概的瞭解了,GET通常用於獲取/查詢資源信息,而POST通常用於更新資源信息。

https://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html

  • GET - 從指定的資源請求數據。
  • POST - 向指定的資源提交要被處理的數據

 HTTP協議包含:通用頭域、請求消息、響應消息和主體信息。

 

2.nginx和Apache區別

最核心的區別在於apache是同步多進程模型,一個鏈接對應一個進程;nginx是異步 的,多個鏈接(萬級別)能夠對應一個進程。

Nginx自己就是一個反向代理服務器;Nginx支持7層負載均衡;其餘的固然, Nginx可能會比apache支持更高的併發。

Apache在處理動態有優點,Nginx併發性比較好,CPU內存佔用低,若是rewrite 頻繁,那仍是Apache吧

 

 

3.cookie和session區別?禁用cookie後,session還能用嗎?如何共享分佈式集羣下的session?

  http://www.javashuo.com/article/p-ospdgarp-ba.html

cookie:存儲在瀏覽器中,有大小限制,相對不安全,會泄露用戶信息

session:存儲在服務器端,無大小限制,相對安全,session_id存儲在cookie中

禁用後,session能夠存儲在URL中.  session_name();   SID;

session.save_handler    存儲位置 file  redis  memcache

 

4.PHP垃圾回收機制?運行原理?PHP-FPM是什麼?如何肯定一臺機器應該開啓多少個PHP進程?

垃圾回收機制:引用計數。

每一個php變量存在一個叫"zval"的變量容器中。一個zval變量容器,除了包含變量的類型和值,還包括兩個字節的額外信息。第一個是"is_ref",是個bool值,用來標識這個變量是不是屬於引用集合(reference set)。經過這個字節,php引擎才能把普通變量和引用變量區分開來,因爲php容許用戶經過使用&來使用自定義引用,zval變量容器中還有一個內部引用計數機制,來優化內存使用。第二個額外字節是"refcount",用以表示指向這個zval變量容器的變量(也稱符號即symbol)個數。全部的符號存在一個符號表中,其中每一個符號都有做用域(scope),那些主腳本(好比:經過瀏覽器請求的的腳本)和每一個函數或者方法也都有做用域。

https://zhuanlan.zhihu.com/p/30636538

 

PHP-FPM是一種進程管理工具。fastcgi是web服務器與處理程序之間的通信協議。

 

變量的自動回收

在php中 除了 arrayobject類型的變量,其他大部分是自動回收
php 普通變量的回收和 該變量的引用次數有關。

寫時複製(Copy On Write:COW),簡單描述爲:若是經過賦值的方式賦值給變量時不會申請新內存來存放新變量所保存的值,而是簡單的經過一個計數器來共用內存,只有在其中的一個引用指向變量的值發生變化時,才申請新空間來保存值內容以減小對內存的佔用。 - TPIP 寫時複製

這時候,咱們unset操做時refcount 由2變爲1,由於有內部引用指向 $a,因此在外部 其所佔用的空間並不會被銷燬。

而後咱們的外部引用已經被中斷了,咱們也不能使用它。它就成了一個「孤兒」,在c語言中叫作野指針。在php中叫作循環引用。內存泄漏。想要銷燬變量的話,只能等 php腳本結束。

循環引用形成的內存泄漏

爲了清理這些垃圾,引入了兩個準則

  • 若是引用計數減小到零,所在變量容器將被清除(free),不屬於垃圾
  • 若是一個zval 的引用計數減小後還大於0,那麼它會進入垃圾週期。其次,在一個垃圾週期中,經過檢查引用計數是否減1,而且檢查哪些變量容器的引用次數是零,來發現哪部分是垃圾。

循環引用基本上只會出如今 數組和對象中,對象是由於它的自己就是引用

object和array的回收過程

php7的垃圾回收包含兩個部分,一個是垃圾收集器,一個是垃圾回收算法。

垃圾收集器,把剛剛提到的,多是垃圾的元素收集到回收池中 也就是把變量的 zend_refcount的信息 放在回收池中。 當回收池的值達到必定額度了,會進行統一處理。

處理的過程呢,就比較簡單。

遍歷回收池中的每個變量,根據每個變量,再遍歷每個成員,若是成員還有嵌套的話繼續遍歷。而後把全部成員的 作模擬的 refcount -1。若是此時外部的變量的 引用次數爲 0 。那麼能夠視爲垃圾,清楚。若是大於0,那麼恢復引用次數,並從垃圾回收池中取出。

垃圾回收的原理

若是你這個變量不是垃圾,那麼它的全部成員變量的引用減一以後,必然不會是總變量的引用爲0。

http://www.javashuo.com/article/p-emmbacpf-d.html

http://www.laruence.com/2018/04/08/3170.html

https://my.oschina.net/shyl/blog/517656

5.你瞭解的設計模式是什麼?

https://designpatternsphp.readthedocs.io/zh_CN/latest/Creational/README.html

單例模式:instanceof 用於肯定一個 PHP 變量是否屬於某一類 class 的實例

工廠模式:

觀察者模式:

 

6.myisam和innodb的區別以及應用?索引結構如何實現?

http://www.javashuo.com/article/p-bfbqamtm-k.html

myisam:表鎖、不支持外鍵、不支持事務,支持全文檢索(英文),B+樹,索引存儲爲 物理內存地址

innodb:行鎖,支持外鍵,支持事務,不支持全文檢索,B+樹,索引存儲方式不一樣 主鍵ID值 以及數據

 

7.如何優化mysql?

數據表數據類型的優化;(字段類型和字段長度)

SQL語句的優化; (子查詢用關聯查詢代替;limit 所需條數;group by  order by null;)

索引優化;(主鍵索引、惟一索引、普通索引、聯合索引 最左原則、外建索引、全文索引)

存儲引擎的優化;(myisam  innodb)

數據表結構的優化; (冗餘字段,分庫分表,分區)

服務器架構的優化;(讀寫分離;主從;負載均衡;雙主熱備)

 

8.mysql的聯合索引?有什麼特性?何時考慮創建聯合索引?

多個字段 最左原則,abc  => a,ab,abc,ac

 

9.深複製和淺複製;

變量有值傳遞和引用傳遞,其實,對象也相似如此,因此,對象有淺複製和深複製之說。

 

 

10.簡述一下數據庫的分表方式以及應用場景。

按時間、按主鍵ID取模或取餘、熱數據與冷數據

 

11.簡述一下nosql以及應用場景。

redis:

mongodb:

12.設計一個短地址方案,寫一個函數或思路。

網上比較流行的算法有兩種 自增序列算法、 摘要算法

http://www.javashuo.com/article/p-wefkleed-o.html

https://blog.csdn.net/xyz_lmn/article/details/8057270

 

13.有一個100G的文件,如何統計某個關鍵詞出現的次數。

  substr_count() 函數計算子串在字符串中出現的次數。

  grep -o 'text' text.txt | wc  -l  ( | wc -l是統計次數 )

  strstr — 查找字符串的首次出現
  stristr strstr不區分大小寫的版本 
  strpos -查找字符串首次出現的位置 
  substr ( string $string , int $start [, int $length ] ) 
  strrchr ( string $haystack , mixed $needle ) 
  strripos -計算指定字符串在目標字符串中最後一次出現的位置(不區分大小寫) 
  stripos -查找字符串首次出現的位置(不區分大小定) 
  strrpos -計算指定字符串在目標字符串中最後一次出現的位置

14.HTTP狀態碼? 詳細的狀態碼解析 https://baike.baidu.com/item/HTTP%E7%8A%B6%E6%80%81%E7%A0%81/5053660?fr=aladdin

(大部分狀況都是代碼 或者配置有問題 影響的)

  HTTP狀態碼主要分爲5類:以1開頭的表明請求已被接受,須要繼續處理;以2開頭的表明請求已成功被服務器接收、理解、並接受;以3開頭的表明須要客戶端採起進一步的操做才能完成請求;以4開頭的表明了客戶端看起來可能發生了錯誤,妨礙了服務器的處理;以5開頭的表明了服務器在處理請求的過程當中有錯誤或者異常狀態發生,也有多是服務器意識到以當前的軟硬件資源沒法完成對請求的處理。

200 成功;

 

201;

301 永久重定向;

302 臨時重定向;

304:客戶端的緩存資源是最新的,要客戶端使用緩存。

400   

403 禁止(服務器拒絕響應);

404 找不到資源;

500 服務器內部錯誤;

502 cgi或fastcgi通訊錯誤,php超時;

503:服務器目前沒法爲請求提供服務;

504 服務器超時 fastcgi 佔滿或其餘緣由 複雜 nginx 錯誤常見

(建議本地環境使用nginx 會出現的錯誤問題比較多 有助於之後處理服務器問題 解決問題 nginx 日誌文件 以及php-fpm 日誌文件 學會在linux 上查找文件 搜索文件 一般日誌文件會比較大 學會使用搜索 過濾查看日誌文件 頗有必要)

 

15.簡述長鏈接和短鏈接的特色以及應用場景,PHP如何選擇?

16.web開發中通常有哪些安全問題並簡述一下原理和處理方式。防護方式以及函數

  XSS:跨站腳本攻擊

  SQL注入:因爲服務端沒有作處理 ,直接插入數據庫。

  CSRF:

  DOOS:

17.使用過哪些PHP框架?簡述一下各自的優缺點?路由機制?

18.簡述一下閉包?匿名函數?

19.PHP有關的數據函數?

 array_push

 array_pop

 array_shift

    array_unshift

 array_diff

 array_interest

 array_merge

 array_splice

 array_muiltysort 

20.Linux 下如何把文件的權限設定成777,其中每一個777表明什麼?

  chmod 777 文件

     7 所屬者 讀寫執行

  7 所屬組 讀寫執行

  7 其餘 讀寫執行

21.讀寫一個函數,實現如下功能,字符串open_door替換成OpenDoor,make_by_id替換成 MakeById.

ucfirst — 將字符串的首字母轉換爲大寫

ucwords() - 將字符串中每一個單詞的首字母轉換爲大寫

lcfirst() - 使一個字符串的第一個字符小寫

strtolower() - 將字符串轉化爲小寫

strtoupper() - 將字符串轉化爲大寫

方法一:

function firstWords($str) {
return str_replace(' ','',ucwords(str_replace('_',' ',$str)));
}
echo firstWords('make_by_id');

方法二:

function firstWords($str) {
return str_replace(' ','',ucwords(preg_replace('/\_/i', ' ', $str)));
}
echo firstWords('make_by_id');

方法三:

function firstWords($str) {
$arr = explode('_',$str);
foreach ($arr as $key => $val) {
$arr[$key] = ucwords($val);
}
return implode('',$arr);
}
echo firstWords('make_by_id');

方法四: 數組形式
function firstWords($str) {
  if(is_array($str)) {
  $arr = str_replace('_',' ',$str);
  foreach ($arr as $key => $val) {
  $arr[$key] = str_replace(' ','',ucwords($val));
   }
   return $arr;
  }
}
var_dump(firstWords(['make_by_id','hello_world','open_eye']));

22.字符串翻轉 不用內置函數

http://www.javashuo.com/article/p-ctfyzlii-ba.html

23.寫出最少5個PHP魔術函數,並說明用處。

__construct()具備構造函數的類會在每次建立新對象時先調用此方法,因此很是適合在使用對象以前作一些初始化工做。

Note: 若是子類中定義了構造函數則不會隱式調用其父類的構造函數。要執行父類的構造函數,須要在子類的構造函數中調用parent::__construct()。若是子類沒有定義構造函數則會如同一個普通的類方法同樣從父類繼承(假如沒有被定義爲 private 的話)。

 

24.簡述echo 0 == "a0" ? 1 : 2; 結果 1 true

25.請簡述left join ,right join ,inner join,corss join,

26.請描述數據庫中事務是什麼?以及事務常見的一些問題以及相應的解決方案?隔離級別?

27.寫10個linux經常使用命令?

  cd more find mkdir chmod grep less top tail header ps tar ll ls whereis which locate make make install wget su awk 

28.nginx 將全部到 /api/xxx 的請求重寫到 /api.php/xxx

29.用PHP打印出前一天的時間,格式是 2018-12-1 10:22:11;

 date('Y-m-d H:i:s',strtotime('-1 days'));

30.echo  print  print_r 區別

31.寫一個函數,從URL中取出文件的擴展名。例如:http://www.sina.com/abc/de/fg.php?id=1, 須要取出PHP或.php

32.PHP5的權限控制修飾符

  public 公共的 任何地方均可以調用

  private 私有的 只能本身調用,不能被繼承也不能被重寫,子類也不可使用。

  protected 受保護的 只有父類或子類可使用。

33.哪些函數能夠打開一個文件,以對文件進行讀和寫操做?列舉出你知道的。

34.MVC的理解?

35.論壇中的無限極分類的 實現原理?

36.SVN和GIT的區別?

  SVN 集中式   無網絡不能提交或拉取數據

  GIT 分佈式 有無網絡均可以commit add ,提交的數據會放在暫存區中,tag打包 標籤

37.對於大流量的網站,您採用什麼樣的方法來解決訪問量問題?

38.請寫一個匹配IP地址的正則表達式。

39.描述你所使用的數據接口實現方式,以及接口校驗的方法。

40.如何分析一條sql語句的性能?

41.數據表設計原則,常見的分庫分表策略?

42.微信朋友圈數據結構是如何設計的?

43.如何實現負載均衡,多服務器以前如何共享session?

44.經常使用排序算法有哪些?時間複雜度有什麼差別?寫出一種排序算法的具體實現代碼?

45.HTTP 三次握手 四次揮手

一、TCP/IP鏈接

 HTTP即超文本傳輸協議,是一個基於請求與響應模式的、無狀態的、應用層的協議,絕大多數的Web開發,都是構建在HTTP協議之上的Web應用。
  手機可以使用聯網功能是由於手機底層實現了TCP/IP協議,可使手機終端經過無線網絡創建TCP鏈接。TCP協議能夠對上層網絡提供接口,使上層網絡數據的傳輸創建在「無差異」的網絡之上。
 
創建起一個TCP鏈接須要通過「三次握手」:
 
第一次握手:客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認;
 
第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時本身也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態;
 
第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。
 
握手過程當中傳送的包裏不包含數據,三次握手完畢後,客戶端與服務器才正式開始傳送數據。理想狀態下,TCP鏈接一旦創建,在通訊雙方中的任何一方主動關閉鏈接以前,TCP 鏈接都將被一直保持下去。斷開鏈接時服務器和客戶端都可以主動發起斷開TCP鏈接的請求,斷開過程須要通過「四次握手」(過程就不細寫了,就是服務器和客戶端交互,最終肯定斷開).
 

HTTP的工做過程:當咱們請求一個超連接時,HTTP就開始工做了,客戶端先發送一個請求到服務器,請求內容包括:協議版本號、請求地址、請求方式、請求頭和請求參數;服務器收到請求後作相應的處理,並將響應數據返回到客戶端,響應內容包括:協議版本號、狀態碼和響應數據。前端根據響應數據作相應的處理,就是最終咱們看到的內容。這些過程是HTTP自動完成的,咱們只是輸入或點擊請求地址,而後查看前端給咱們展現的內容。更多關於HTTP協議的介紹請參考:http://www.cnblogs.com/li0803/archive/2008/11/03/1324746.html 很詳細的講解

 

46.一個網站從前端到後端有哪些能夠緩存的地方?

  CSS JS 圖片服務器 CDN緩存,減小HTTP請求,數據緩存,靜態化頁面,

47.include 和require 、require_once 區別?

  include在引入不存文件時產生一個警告且腳本還會繼續執行.    若是no.php文件不存在,echo '123'這句是能夠繼續執行的.    warning

  require則會致使一個致命性錯誤且腳本中止執行。若是no.php文件不存在,echo '123'這句是不能夠繼續執行的.   error

 48.mysql_fetch_row()  和 mysql_fetch_array()區別?

  row 獲取一行數據

  array 獲取全部數據

49.用PHP寫出顯示客戶端IP與服務器IP的代碼?

客戶端:<?=$_SERVER['REMOTE_ADDR']?>
服務器端:<?=$_SERVER['SERVER_ADDR']?>

51.mysql有哪幾種數據引擎,有何區別?

52.寫一個函數抓取遠程圖片並放在本地

53.寫一個函數驗證電子郵箱的格式是否正確。

<?php $mail = 'runoob@runoob.com'; //郵箱地址

$pattern = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,})$/";

preg_match($pattern, $mail, $matches);

var_dump($matches); //輸出匹配結果

?>

 

<?php $email = 'runoob@runoob.com'; //郵箱地址

  if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {

    $emailMsg = "非法郵箱格式";

  } else { $emailMsg = "正確郵箱格式"; }

  echo $emailMsg;

?>

54.在nginx+php-fpm 的架構中,用戶訪問出現http 502 狀態,過一段時間返回http 504 狀態,簡述這一變化的緣由,以及如何快速解決這一異常狀態?

55.若是你申請了5G的redis,寫滿後你認爲會出現什麼狀況?

56.日誌文件access.log,日誌列字段爲date time request_url,多列使用空間分隔,每條日誌獨立成行,

例:2018-10-11 09:11:11  /action1

  2018-10-11 09:11:11  /action2

  2018-10-11 09:11:11  /action3

   問題:可使用任意腳本方式,統計出日誌文件裏,每種action的數量。

  問題:可使用任意腳本方式,統計出日誌文件量,每分鐘QPS峯值的時間點和數值。

57.購買商品是避免超賣商品(併發),避免訂單數和庫存數量不一致的問題。

58.瞬間訪問量的處理。有一個活動,預計10分鐘會帶來1000萬PV,請問怎麼處理問題?

59.mysql樂觀鎖、悲觀鎖原理?

60.mysql中datetime,timestamp、int字段類型聯繫與區別?

int
1. 佔用4個字節
2. 創建索引以後,查詢速度快
3. 條件範圍搜索可使用使用between
4. 不能使用mysql提供的時間函數

Int佔據4個字節,以整形存儲時間戳,創建索引以後,查詢速度快,條件範圍搜索可使用使用between,不能使用mysql提供的時間函數。
結論:適合須要進行大量時間範圍查詢的數據表

datetime
1. 佔用8個字節,Mysql以 YYYY-MM-DD HH:MM:SS 形式檢索和顯示datetime類型的數據,理論上存儲的時間範圍爲 1000-01-01 00:00:00 到 9999-12-31 23:59:59
2. 容許爲空值,能夠自定義值,系統不會自動修改其值。
3. 實際格式儲存(Just stores what you have stored and retrieves the same thing which you have stored.)

4. 與時區無關(It has nothing to deal with the TIMEZONE and Conversion.)

5. 能夠在指定datetime字段的值的時候使用now()變量來自動插入系統的當前時間。

在建立或者修改表結構的語句中,若是咱們,使用下面的語句,默認值爲當前時間(更新表記錄並不會修改該時間):

ALTER TABLE test ADD created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP AFTER updated_at;
假如,一樣字段,咱們修改給該字段賦予屬性on update CURRENT_TIMESTAMP,則會在每次更新數據的時候自動更新修改時間:

ALTER TABLE test CHANGE created_at created_at DATETIME on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
還有一個特性:與時區無關

應用場景:適合用來記錄數據的原始的建立時間,由於不管你怎麼更改記錄中其餘字段的值,datetime字段的值都不會改變,除非你手動更改它。

timestamp
1. 佔用4個字節
2. 容許爲空值,可是不能夠自定義值,因此爲空值時沒有任何意義。
3. TIMESTAMP值不能早於1970或晚於2037。這說明一個日期,例如'1968-01-01',雖然對於DATETIME或DATE值是有效的,但對於TIMESTAMP值卻無效,若是分配給這樣一個對象將被轉換爲0。
4.值以UTC格式保存( it stores the number of milliseconds)

5.時區轉化 ,存儲時對當前的時區進行轉換,檢索時再轉換回當前的時區。

6. 默認值爲CURRENT_TIMESTAMP(),其實也就是當前的系統時間。
7. 數據庫會自動修改其值,因此在插入記錄時不須要指定timestamp字段的名稱和timestamp字段的值,你只須要在設計表的時候添加一個timestamp字段便可,插入後該字段的值會自動變爲當前系統時間。
8. 默認狀況下之後任什麼時候間修改表中的記錄時,對應記錄的timestamp值會自動被更新爲當前的系統時間。
9. 若是須要能夠設置timestamp不自動更新。經過設置DEFAULT CURRENT_TIMESTAMP 能夠實現。
修改自動更新:
`field_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
修改不自動更新
`field_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP 

結論:timestamp類型適合用來記錄數據的最後修改時間,由於只要你更改了記錄中其餘字段的值,timestamp字段的值都會被自動更新。(若是須要能夠設置timestamp不自動更新)

TIMESTAMP

新增timestamp 字段

alter table table_name add column created_at timestamp not null default CURRENT_TIMESTAMP;
TIMESTAMP佔據4個字節,存儲形式爲 YYYYMMDDHHMMSS即以UTC形式存儲 ,存儲範圍爲1970-01-01 08:00:01到2038-01-19 11:14:07.超出這個值會被存儲爲0.能夠設置字段的長度,設置字段的長度並不改變實際的值,可是會影響查詢顯示的結果。例如:

字段類型 顯示格式 保存格式
TIMESTAMP(14) YYYY-MM-DD-HH-MM-SS YYYYMMDDHHMMSS
TIMESTAMP(12) YY-MM-DD-HH-MM-SS YYMMDDHHMMSS
TIMESTAMP(10) YY-MM-DD-HH-MM YYMMDDHHMM
TIMESTAMP(8) YY-MM-DD-HH YYMMDDHH
TIMESTAMP(6) YY-MM-DD YYMMDD
TIMESTAMP(4) YY-MM YYMM
TIMESTAMP(2) YY YY
若是在一張數據表中,有多個列是TIMESTAMP類型的,只有第一個會在每次更新記錄的時候會自動更新時間,能夠做爲記錄修改時間,其餘的能夠做爲數據原始建立時間。

默認值爲CURRENT_TIMESTAMP(),其實也就是當前的系統時間

應用場景:適合記錄數據的最後修改時間,只要有修改記錄,就能夠把時間保存下來,不須要你手工去記錄。因爲佔用字節比較小,效率上也會高點,可是時間上的限制,不能超出2038年,不能早於1970年。

比較大的缺陷:TIMESTAMP比較受時區timezone的影響以及MYSQL版本和服務器的SQL MODE的影響

雖然咱們查詢顯示的格式相似於字符串,可是仍是能夠直接經過order 進行排序來實現簡單的時間比較

各類場景不同,能夠選擇適合的類型做爲時間存儲的列類型。

DATE

Date只存儲日期,不存儲時間,也就是說好比今天2016-03-04,並不存儲時分秒。MySQL 以 'YYYY-MM-DD' 格式檢索與顯示 DATE 值。支持的範圍是 '1000-01-01' 到 '9999-12-31'

 

61.請說明PHP中傳值和傳引用的區別,何時傳值何時傳引用?

62.面向對象中接口和抽象類的區別以及應用場景?

63.foo()和@foo()區別?

64.thinkphp中url模式有哪幾種?默認是那種?自動加載類?

spl_autoload_register()

若是須要多條 autoload 函數,spl_autoload_register() 知足了此類需求。 它實際上建立了 autoload 函數的隊列,按定義時的順序逐個執行。
相比之下, __autoload() 只能夠定義一次。

65.數據庫中事務是什麼?概述mysql中事務的回滾機制?

66.二維數組去重?

//二維數組去掉重複值 
function array_unique_fb($array2D) 

foreach ($array2D as $v) 

$v = join(",",$v); //降維,也能夠用implode,將一維數組轉換爲用逗號鏈接的字符串 
$temp[] = $v; 

$temp = array_unique($temp); //去掉重複的字符串,也就是重複的一維數組 
foreach ($temp as $k => $v) 

$temp[$k] = explode(",",$v); //再將拆開的數組從新組裝 

return $temp; 

67.比較連個字符串A和B,肯定A中是否包含B中全部的字符。(不限制大小寫和出現順序)

  

68.實現以下接口完成描述功能:LRU算法, 

 

有表以下,只有一個select語句表,不及格科目大於或等於2科的學生,的平均分(全部科目的平均分)。

select * from student

----------------------------------------

name  |  subject  |   score |

張三  |  數學 | 80

張三 | 語文  |53

張三  | 英語 | 59

李四 | 數學 | 55

李四 | 語文 | 56

李四 | 英語 |  50

要點: 1.要統計每一個同窗不及格科目的個數。  2.計算平均值。3.查詢每一個學生的最大分數的科目以及分數。

 

 

 

 

簡述PHP這門編程語言的特色以及優缺點?

簡述一下HTML5的新特性?是否瞭解響應式佈局?其實現原理是什麼?

相關文章
相關標籤/搜索