1. 程式人生 > >php高階研發或架構師必瞭解---很多問題面試中常問到!

php高階研發或架構師必瞭解---很多問題面試中常問到!

最近接連面試了幾家公司,有些重要問題記錄一下,督促自己學習提高,同時希望給朋友們一些幫助。
內容很多,一點點完善,一步步學習。。
有些是面試被問,有些是招聘要求,有些是自己整理加的。

一、MySQL相關知識
    1、 mysql優化方式
            MYSQL 優化常用方法
            mysql 效能優化方案
  
    2、如何分庫分表
           參考:
   http://blog.sina.com.cn/s/blog_6e322ce70100zs9a.html
           http://www.jb51.net/article/29771.htm

   3、 Mysql+如何做雙機熱備和負載均衡
http://www.dewen.org/q/51/Mysql+如何做雙機熱備和負載均衡
   
   4、資料表型別有哪些
       MyISAM、InnoDB、H

EAP、BOB,ARCHIVE,CSV等
       MyISAM:成熟、穩定、易於管理,快速讀取。一些功能不支援(事務等),表級鎖。
       InnoDB:支援事務、外來鍵等特性、資料行鎖定。空間佔用大,不支援全文索引等。

       myisam和Innodb引擎的主要特點
       MySQL的儲存引擎MyISAM與InnoDB有什麼區別?

   5、防sql注入方法
      mysql_escape_string(strip_tags($arr["$val"]));

   6、mysql把一個大表拆分多個表後,如何解決跨表查詢效率問題

  1. /** 
  2. * 函式名稱:post_check() 
     
  3. * 函式作用:對提交的編輯內容進行處理  
  4. * 參  數:$post: 要提交的內容  
  5. * 返 回 值:$post: 返回過濾後的內容  
  6. */
  7. function post_check($post){  
  8. if(!get_magic_quotes_gpc()){// 判斷magic_quotes_gpc是否為開啟 
  9. $post = addslashes($post);// 進行magic_quotes_gpc沒有開啟的情況對提交資料的過濾 
  10. }  
  11. $post = str_replace("_","\_"$post);// 把 '_'過濾掉
  12. $post = str_replace("%","\%"$post);// 把 '%'過濾掉
  13. $post = nl2br($post);// 回車轉換 
  14. $post = htmlspecialchars($post);// html標記轉換 
  15. return$post;  
  16. }  

   7、索引應用
         什麼情況下考慮索引
         什麼情況不適合索引
         一個語句是否用到索引如何判斷
        經常發生的用不到索引的場景:
                like '%.....'
                資料型別隱式轉換
                or 關鍵字加其它條件約束
       全文索引:
                只能用於MYIsAM表,在CHAR,VARCHAR,TEXT型別的列上建立。
      

   8、mysql對於大表(千萬級),要怎麼優化呢?
        參考http://www.zhihu.com/question/19719997

   9、mysql的慢查詢問題
  其實通過慢查詢日誌來分析是一種比較簡單的方式,如果不想看日誌,可以藉助工具來完成,

如mysqldumpslow, mysqlsla, myprofi, mysql-explain-slow-log, mysqllogfilter等,感覺自己來分析一個需要豐富的經驗,一個浪費時間。

10、關於使用者登入狀態存session,cookie還是資料庫或者memcache的優劣 http://www.dewen.org/q/11504/

關於使用者登入狀態存session%2Ccookie還是資料庫或者memcache的優劣

  11、事務應用極端情況處理
  12、sql語言分4大類請列舉
        DDL--CREATE,DROP,ALTER
        DML--INSERT,UPDATE,DELETE
        DQL-SELECT
        DCL--GRANT,REVOKE,COMMIT,ROLLBACK
        

二、php基礎
  •   session的跨域共享

三、php高階
  • 長連線和短連線的使用
  • socket的使用
  • 支付安全問題

  • 面向物件
    三大特性:封裝、繼承、多型(方法重寫)。
    抽象類:abstract,至少有一個方法是抽象方法,不能被例項化,為子類定義公共介面。
    介面:interface,解決php的單繼承問題,所有方法都是public訪問許可權的抽象方法,不能宣告變數只能宣告常量。
    繼承一個類的同時實現多個介面
    class A  extends B implements 介面1,介面2...,介面n(){
          //實現所有介面中的方法
    }
  • lamp 和 lnmp 網站架構效能差異的原因分析
  • 解釋性語言和編譯性語言的效能分析,舉例。

四、正則

      email,html,js等匹配

五、開發基礎

  •       程序和執行緒定義,區別和聯絡。
           程序的狀態:執行run、就緒ready、等待wait
六、Nosql資料庫
       memcached、redis、mongodb的區別聯絡
       3個場景完全不同的東西。1.memcached:單一鍵值對記憶體快取的,做物件快取無可替代的分散式快取;2.redis:是演算法和資料結構的集合,快速的資料結構操作是他最大的特點,支援資料持久化;3.mongodb是bson結構、介於rdb和nosql之間的,更鬆散更靈活的,但是不支援事務,只用作非重要資料儲存。
     參考 MongoDB 或者 redis 可以替代 memcached 嗎?

七、常用linux命令
      比如軟連結

八、架構相關
  •        專案上線前的壓力測試,單臺伺服器支援的併發數,pv數。
  •        伺服器資源合理分配問題

             CPU:Apache
                   MySQL處在高負載環境下,磁碟IO讀寫過多,肯定會佔用很多資源,必然會CPU佔用過高。
             記憶體:記憶體庫,資料庫軟體
                
             硬碟:檔案

  •        web2.0架構選擇

              MongoDB+redis 或者 MySQL+Memcached 比較好的組合,邏輯簡單的就用NOSQL

  •        當前流行主要網站架構
    LAMP、LNMP、LLMP
    現在網路上還有一種LNAMP構架,也就是綜合了nginx和Apache的優點,使用Apache負載PHP,nginx負責解析其他Web請求,使用nginx的rewrite模組,但是Apache埠不對外開放,Apache的許多模組都可以不載入減少資源。

其它:
資料探勘經驗、熟悉Hadoop/lucene/mahout;