php 类分开写,程序员面试必备PHP基础面试题 – 第十七天
一、寫一段文件上傳代碼,要求只能上傳圖片格式,大小限制5M
Action.php:
$name=$_FILES[‘pic’][‘name’];
$type=$_FILES[‘pic’][‘type’];
$tmp=$_FILES[‘pic’][‘tmp_name’];
$error=$_FILES[‘pic’][‘error’];
$size=$_FILES[‘pic’][‘size’];
$maxsize=1024*1024*5;
If($size>$maxsize){
Exit(‘圖片大小超出’);
}
$name_arr=array(‘gif’,’png’,’jpg’,’jpeg’);
$ext=pathinfo($name,PATHINFO_EXTENSION);
If(!in_array($ext,$name_arr)){
Exit(‘圖片類型不正確’);
}
二、網站出現mysql 壓力太大,mysql 占用的cpu 太高,應該從哪些方面入手查找問題根源?
1、 數據庫設計方面,設計結構良好的數據庫,允許部分數據冗余。
選取最適用的字段屬性,盡可能把字段設置為NOT NULL,這樣在查詢的時候,數據庫不用去比較NULL值。
2、系統架構設計方面,表散列,把海量數據散列到幾個不同的表里面,集群,數據庫查詢和寫入分開。
3、寫高效sql語句,以提高效率。
使用連接(join)來代替子查詢
使用聯合(union)來代替手動創建的臨時表
4、所得皆必須,只從數據庫取必須的數據。
5、必要的時候用不同的存儲引擎,比如Innodb可以減少死鎖,HEAP可以提高一個數量級的查詢速度。
6、使用事務
7、使用外鍵
8、使用索引
三、怎么防止sql注入?
1、過濾掉一些常見的數據庫操作關鍵字:select,insert,update,delete,and,*等
或者通過系統函數:addslashes(需要被過濾的內容)來進行過濾。
2、在PHP配置文件中
Register_globals=off;設置為關閉狀態 //作用將注冊全局變量關閉。
比如:接收POST表單的值使用$_POST[‘user’],如果將register_globals=on;直接使用$user可以接收表單的值。
3、SQL語句書寫的時候盡量不要省略小引號(tab鍵上面那個)和單引號
4、提高數據庫命名技巧,對于一些重要的字段根據程序的特點命名,取不易被猜到的
5、對于常用的方法加以封裝,避免直接暴漏SQL語句
6、開啟PHP安全模式
Safe_mode=on;
7、打開magic_quotes_gpc來防止SQL注入
Magic_quotes_gpc=off;默認是關閉的,它打開后將自動把用戶提交的sql語句的查詢進行轉換,把’轉為\’,這對防止sql注入有重大作用。
因此開啟:magic_quotes_gpc=on;
8、控制錯誤信息
關閉錯誤提示信息,將錯誤信息寫到系統日志。
9、使用mysqli或pdo預處理。
四、數據庫索引有幾類,分別是什么?什么時候該用索引
普通索引、主鍵索引、唯一索引
并非所有的數據庫都以相同的方式使用索引,作為通用規則,只有當經常查詢列中的數據時才需要在表上創建索引。
五、數組中下標最好是什么類型的,為什么?
數組的下標最好是數字類型的,數字類型的處理速度快。
六、++i和i++哪一個效率高,為什么?
++i效率比i++的效率更高,因為++i少了一個返回i的過程。
七、magic_quotes_gpc()、magic_quotes_runtime()的意思是什么?
Magic_quotes_gpc()是php配置文件中的,如果設置為on則會自動POST,GET,COOKIE中的字符串進行轉義,在’之前加\
Magic_quotes_runtime()是php中的函數,如果參數為true則會數據庫中取出來的單引號、雙引號、反斜線自動加上反斜杠進行轉義。
八、你對Memcach的理解,優點有哪些?
Memcache是一種緩存技術,在一定的時間內將動態網頁經過解析之后保存到文件,下次訪問時動態網頁就直接調用這個文件,而不必在重新訪問數據庫。使用memcache做緩存的好處是:提高網站的訪問速度,減輕高并發時服務器的壓力。
Memcache的優點:穩定、配置簡單、多機分布式存儲、速度快
總結
以上是生活随笔為你收集整理的php 类分开写,程序员面试必备PHP基础面试题 – 第十七天的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java实现layui分页_基于LayU
- 下一篇: cstart做int型转换运算Java,