版權聲明:本文爲博主原創文章,未經博主容許不得轉載。 最近接連面試了幾家公司,有些重要問題記錄一下,督促本身學習提升,同時但願給朋友們一些幫助。 內容不少,一點點完善,一步步學習。。 有些是面試被問,有些是招聘要求,有些是本身整理加的。 1、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、HEAP、BOB,ARCHIVE,CSV等 MyISAM:成熟、穩定、易於管理,快速讀取。一些功能不支持(事務等),表級鎖。 InnoDB:支持事務、外鍵等特性、數據行鎖定。空間佔用大,不支持全文索引等。 myisam和Innodb引擎的主要特色 MySQL的存儲引擎MyISAM與InnoDB有什麼區別? 5、防sql注入方法 mysql_escape_string(strip_tags($arr["$val"])); 6、mysql把一個大表拆分多個表後,如何解決跨表查詢效率問題 [php] view plain copy 在CODE上查看代碼片派生到個人代碼片 /** * 函數名稱:post_check() * 函數做用:對提交的編輯內容進行處理 * 參 數:$post: 要提交的內容 * 返 回 值:$post: 返回過濾後的內容 */ function post_check($post){ if(!get_magic_quotes_gpc()){// 判斷magic_quotes_gpc是否爲打開 $post = addslashes($post);// 進行magic_quotes_gpc沒有打開的狀況對提交數據的過濾 } $post = str_replace("_","\_", $post);// 把 '_'過濾掉 $post = str_replace("%","\%", $post);// 把 '%'過濾掉 $post = nl2br($post);// 回車轉換 $post = htmlspecialchars($post);// html標記轉換 return $post; } 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 2、php基礎 session的跨域共享 php鏈接mysql數據庫的幾種方式及區別 mysql:面向過程 mysqli:面向對象 pdo:可移植性高 請參考:php基礎系列:PHP鏈接MySQL數據庫用到的三種API 3、php高級 長鏈接和短鏈接的使用 socket的使用 支付安全問題 面向對象 三大特性:封裝、繼承、多態(方法重寫)。 抽象類:abstract,至少有一個方法是抽象方法,不能被實例化,爲子類定義公共接口。 接口:interface,解決php的單繼承問題,全部方法都是public訪問權限的抽象方法,不能聲明變量只能聲明常量。 繼承一個類的同時實現多個接口 class A extends B implements 接口1,接口2...,接口n(){ //實現全部接口中的方法 } lamp 和 lnmp 網站架構性能差別的緣由分析 解釋性語言和編譯性語言的性能分析,舉例。 4、正則 email,html,js等匹配 5、開發基礎 進程和線程定義,區別和聯繫。 進程的狀態:運行run、就緒ready、等待wait 6、Nosql數據庫 memcached、redis、mongodb的區別聯繫 3個場景徹底不一樣的東西。1.memcached:單一鍵值對內存緩存的,作對象緩存無可替代的分佈式緩存;2.redis:是算法和數據結構的集合,快速的數據結構操做是他最大的特色,支持數據持久化;3.mongodb是bson結構、介於rdb和nosql之間的,更鬆散更靈活的,可是不支持事務,只用做非重要數據存儲。 參考 MongoDB 或者 redis 能夠替代 memcached 嗎? 7、經常使用linux命令 好比軟連接 8、架構相關 項目上線前的壓力測試,單臺服務器支持的併發數,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的許多模塊均可以不加載減小資源。