php常見的面試題目

一. 基本知識點
1.1 HTTP協議中幾個狀態碼的含義:503 500 401 403 404 200 301 302。。。
200 : 請求成功,請求的數據隨之返回。
301 : 永久性重定向。
302 : 暫時行重定向。
401 : 當前請求需要用戶驗證。
403 : 服務器拒絕執行請求,即沒有權限。
404 : 請求失敗,請求的數據在服務器上未發現。
500 : 服務器錯誤。一般服務器端程序執行錯誤。
503 : 服務器臨時維護或過載。這個狀態時臨時性的。

1.2 Include require include_once require_once 的區別.
處理失敗方式不同:
require 失敗時會產生一個致命級別錯誤,并停止程序運行。
include 失敗時只產生一個警告級別錯誤,程序繼續運行。

include_once/require_once和include/require 處理錯誤方式一樣,
唯一區別在于當所包含的文件代碼已經存在時候,不在包含。

?

?

1.3 (mysql)請寫出數據類型(int char varchar datetime text)的意思; 請問varchar和char有什么區別;
int : 數值類型
char : 固定長度字符串類型
varchar : 可變長度字符串類型
datetime : 時期時間類型
text : 文本類型

varchar和char有什么區別:
? ? ?a. char 長度是固定的,不管你存儲的數據是多少他都會都固定的長度。
而varchar則處可變長度但他要在總長度上加1字符,這個用來存儲位置。

b. char 固定長度,所以在處理速度上要比varchar快速很多,但是浪費存儲空間,
所以對存儲不大,但在速度上有要求的可以使用char類型,反之可以用varchar類型來實例。

1.4 error_reporting 等調試函數使用
error_reporting() 函數能夠在運行時設置php.ini中 error_reporting 指令。
所以可以再程序中隨時調節顯示的錯誤級別。
使用此函數時 display_errors必須是打開狀態。

1.5 寫代碼來解決多進程/線程同時讀寫一個文件的問題。
PHP是不支持多線程的,可以使用php的flock加鎖函數實現。
$fp = fopen("/tmp/lock.txt", "w+");
if (flock($fp, LOCK_EX)) { // 進行排它型鎖定
fwrite($fp, "Write something here\n");
flock($fp, LOCK_UN); // 釋放鎖定
} else {
echo "Couldn't lock the file !";
}
fclose($fp);

1.6 寫一段上傳文件的代碼。
upload.html
<form enctype="multipart/form-data" method="POST" action="upload.php">
Send this file: <input name="name" type="file" />
<input type="submit" value="Send File" />
</form>

upload.php
$uploads_dir = '/uploads';
foreach ($_FILES["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["tmp_name"][$key];
$name = $_FILES["name"][$key];
move_uploaded_file($tmp_name, "$uploads_dir/$name");
}
}

?

1.7 Mysql 的存儲引擎,myisam和innodb的區別。
a. MyISAM類型不支持事務處理等高級處理,而InnoDB類型支持.
b. MyISAM類型的表強調的是性能,其執行數度比InnoDB類型更快.
c. InnoDB不支持FULLTEXT類型的索引.
d. InnoDB 中不保存表的具體行數,也就是說,
執行select count(*) from table時,InnoDB要掃描一遍整個表來計算有多少行,
但是MyISAM只要簡單的讀出保存好的行數即可.
e. 對于AUTO_INCREMENT類型的字段,InnoDB中必須包含只有該字段的索引,但是在MyISAM表中,可以和其他字段一起建立聯合索引。
f. DELETE FROM table時,InnoDB不會重新建立表,而是一行一行的刪除。
g. LOAD TABLE FROM MASTER操作對InnoDB是不起作用的,解決方法是首先把InnoDB表改成MyISAM表,導入數據后再改成InnoDB表,
但是對于使用的額外的InnoDB特性(例如外鍵)的表不適用.
h. MyISAM支持表鎖,InnoDB支持行鎖。

?

二. web 架構,安全,項目經驗

2.1 MySQL數據庫作發布系統的存儲,一天五萬條以上的增量,預計運維三年,怎么優化?
a. 設計良好的數據庫結構,允許部分數據冗余,盡量避免join查詢,提高效率。
b. 選擇合適的表字段數據類型和存儲引擎,適當的添加索引。
c. mysql庫主從讀寫分離。
d. 找規律分表,減少單表中的數據量提高查詢速度。
e。添加緩存機制,比如memcached,apc等。
f. 不經常改動的頁面,生成靜態頁面。
g. 書寫高效率的SQL。比如 SELECT * FROM TABEL 改為 SELECT field_1, field_2, field_3 FROM TABLE.

?

2.2 對于大流量的網站,您采用什么樣的方法來解決各頁面訪問量統計問題
a. 確認服務器是否能支撐當前訪問量。
b. 優化數據庫訪問。參考2.3
c. 禁止外部訪問鏈接(盜鏈), 比如圖片盜鏈。
d. 控制文件下載。
e. 使用不同主機分流。
f. 使用瀏覽統計軟件,了解訪問量,有針對性的進行優化。

?

?

2.3 寫出一個正則表達式,過慮網頁上的所有JS/VBS腳本(即把標記及其內容都去掉):(9)。

答:/<[^>].*?>.*?<\/>/si

?

?

2.4 用PHP打印出前一天的時間格式是2006-5-10 22:21:21

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

?

?

2.5 echo(),print(),print_r()的區別

答:echo是語言結構,無返回值;print功能和echo基本相同,不同的是print是函數,有返回值;print_r是遞歸打印,用于輸出數組對象

?

?

2.6 如何實現字符串翻轉?

答:.用strrev函數唄,不準用PHP內置的就自己寫:

[php]?view plaincopy在CODE上查看代碼片派生到我的代碼片
  1. strrev($str)??
  2. {??
  3. ????$len=strlen($str);??
  4. ????$newstr?=?'';??
  5. ????for($i=$len;$i>=0;$i--)??
  6. ????{??
  7. ????????$newstr?.=?$str{$i};??
  8. ????}??
  9. ????return?$newstr;??
  10. }??




2.7 實現中文字串截取無亂碼的方法。

?

答:mb_substr()

?

2.8?如何用php的環境變量得到一個網頁地址的內容?ip地址又要怎樣得到?

答:$_SERVSR[‘REQUEST_URI’] ,?$_SERVER[‘REMOTE_ADDR’]

?

2.9 求兩個日期的差數,例如2007-2-5 ~ 2007-3-6 的日期差數?

答:(strtotime(‘2007-3-6’)-strtotime(‘2007-2-5’))/3600*24

?

2.10 如何通過javascript判斷一個窗口是否已經被屏蔽

答:獲取open()的返回值,如果是null,就是屏蔽了

轉載于:https://www.cnblogs.com/echohao/p/4722398.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/459051.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/459051.shtml
英文地址,請注明出處:http://en.pswp.cn/news/459051.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php表示私有變量的是,PHP 訪問私有和受保護的成員變量

示例反射通常用作軟件測試的一部分&#xff0c;例如在運行時創建/實例化模擬對象。這對于在任何給定時間點檢查對象的狀態也非常有用。這是在單元測試中使用Reflection來驗證受保護的類成員是否包含期望值的示例。下面是一個非常基礎的汽車課。它具有受保護的成員變量&#xff…

BZOJ2683 簡單題(CDQ分治)

傳送門 之前聽別人說CDQ分治不難學&#xff0c;今天才知道果真如此。之前一直為自己想不到CDQ的方法二很不爽&#xff0c;今天終于是想出來了一道了&#xff0c;太弱…… cdq分治主要就是把整段區間分成兩半&#xff0c;然后用左區間的值去更新右區間的答案&#xff0c;每次把…

VS2010斷點設置技巧

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** 許多Visual Studio下的程序員&#xff0c;甚至一些很有經驗的開發人員&#xff0c;都不…

IOS應用開發版本控制工具之Versions使用,iosversions

Versions版本控制工具破解版&#xff08;Versions.zip&#xff09;下載請見本博文附件。下載后在MAC安裝完以后&#xff0c;圖標是蓮花狀。見下圖&#xff1a; 雙擊運行如下圖&#xff1a; 點擊Repository&#xff0c;連接SVN服務器Repository&#xff08;服務器端采用的是SVN服…

php form action跳轉,form表單頁面跳轉方式提交練習

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓//form表單提交練習/*新建一個form.html網頁用來書寫前端HTML表單*/表單提交練習姓名:年齡:電話:地址:QQ:自我評價://以上功能可自己添加或修改/*在form.html網頁的基礎上新建一個foms.php網頁關聯之前的form.html網頁并書寫php測試…

VS2010調試快捷鍵

*************************************************** 更多精彩&#xff0c;歡迎進入&#xff1a;http://shop115376623.taobao.com *************************************************** vs2010 調試快捷鍵 命令名 快捷鍵 說明 調試.應用代碼更改 Alt F10 啟動生…

什么是算法,什么是數據結構

盡管已經學了幾年&#xff0c;對它們也可以說大致懂得。但是&#xff0c;作為非計算機專業的人員&#xff0c;還是不會比計算機專業人員懂得多。既然沒有受過專門的學習訓練&#xff0c;自然會有三天打魚兩天曬網的感覺&#xff0c;一天可能冒出一個念頭。于是乎&#xff0c;寫…

如何在多web服務器共享SESSION數據

2019獨角獸企業重金招聘Python工程師標準>>> 一、問題起源 稍大一些的網站&#xff0c;通常都會有好幾個服務器&#xff0c;每個服務器運行著不同功能的模塊&#xff0c;使用不同的二級域名&#xff0c;而一個整體性強的網站&#xff0c;用戶系統是統一的&#xff0…

grpc php 返回值過大,使用grpc實現php、java、go三方互調

grpc作為經典的rpc協議&#xff0c;雖然略重&#xff0c;但是是有學習的價值的通過下面的內容可以快速上手這個grpc框架安裝命令行工具php需要這個額外的protoc、grpc_php_plugin工具把這個protobuf格式的文件生成php語言里的類go需要安裝protoc-gen-go工具把protobuf格式的接口…

SOCKET通信的基本步驟

SOCKET通信的基本步驟 1&#xff09;建立一個服務器ServerSocket&#xff0c;并同時定義好ServerSocket的監聽端口&#xff1b;2&#xff09;ServerSocket 調用accept()方法&#xff0c;使之處于阻塞。3&#xff09;創建一個客戶機Socket,并設置好服務器的IP和端口。4&#xff…

Linux epoll 筆記(高并發事件處理機制)

wiki&#xff1a; Epoll優點&#xff1b; Epoll工作流程&#xff1b; Epoll實現機制: epollevent; Epoll源碼分析&#xff1b; Epoll接口: epoll_create; epoll_ctl; epoll_close; Epoll工作方式: LT(level-triggered); ET(edge-triggered); Epoll應用模式; Epoll優點&#xff…

Django請求響應對象

請求與響應對象 HttpRequest HttpRequest存儲了客戶請求的相關參數和一些查詢方法。 path請求頁面的全路徑,不包括域名—例如, "/hello/"。 methodHttp請求方法&#xff0c;包括GET,POST。 GETQueryDict類實例&#xff0c;包含所有HTTP GET參數的字典對象。 POSTQuer…

matlab 作圖 虛線太長,matlab?極坐標繪圖?在matlab中,用polar畫的圖形,如何使虛線圓多顯示幾個?...

滿意答案iredwood推薦于 2018.12.26采納率&#xff1a;52% 等級&#xff1a;12已幫助&#xff1a;13535人打開polar.m 文件&#xff0c;路徑可通過輸入 which polar 命令得到。其中修改下面這段代碼&#xff0c;可以控制虛線圓的顯示個數。其中rticks 為控制顯示個數的參量。…

《學習opencv》筆記——矩陣和圖像處理——cvAnd、cvAndS、cvAvg and cvAvgSdv

矩陣和圖像的操作 (1)cvAnd函數 其結構 void cvAnd( //將src1和src2按像素點取“位與運算”const CvArr* src1,//第一個矩陣const CvArr* src2,//第二個矩陣CvArr* dst,//結果矩陣const CvArr* mask NULL;//矩陣經行像素點與的“開關” );程序實例#include <cv.h> #inc…

Hibernate之加載策略(延遲加載與即時加載)和抓取策略(fetch)

假設現在有Book和Category兩張表,表的關系為雙向的一對多,表結構如下: 假設現在我想查詢id為2的那本書的書名,使用session.get(...)方法: 1 Session sessionHibernateUtil.getSession(); 2 Book book (Book) session.get(Book.class,2); 3 System.out.println(book.getName());…

指紋圖像方向圖matlab,matlab指紋方向場方向圖程序

function Fangxiangtu zhiwen_fangxiangtu( Zhiwentuxiang )%函數功能計算指紋方向圖%函數參數指紋圖像Zhiwentuxiang%函數返回值指紋方向圖FangxiangtuSizeZhiwentuxiang size( Zhiwentuxiang ) ;Zhiwentuxiang double( Zhiwentuxiang ) ;W 4; % 窗口大小(2W1)*(2W1)W 4;…

怎樣實現一個簡單的jQuery編程

第一步&#xff1a;在head中載入jQuery框架 <script  type"text/javascript" src"jQuery文檔所在的絕對路徑"></script> 注&#xff1a; type——指定腳本的mime類型 src——規定外部腳本文件的URL jQuery是一個javascript庫&#xff0c;相…

php多人點餐可以看到對方點的菜,千萬不要小看你身邊那個會點菜的人,因為

飯局上&#xff0c;你常常是負責點菜的那個人&#xff0c;還是只負責吃&#xff1f;拿起菜單點菜&#xff0c;你是很從容&#xff0c;還是不知道怎么點&#xff1f;事實上&#xff0c;飯局上那個會點菜的人&#xff0c;千萬不能小看。某次隨老板外出開會&#xff0c;跟去的幾個…

gvim for php,轉 : Gvim建立IDE編程環境 (Windows篇)

說明&#xff1a;本文是作者在完全按照著名的《手把手教你把Vim改裝成一個IDE編程環境》一文&#xff0c;在Windows XP上用gvim建立IDE環境時所作的備忘。原作地址&#xff1a;http://blog.csdn.net/wooin/archive/2007/10/31/1858917.aspx。1.安裝gvim7.2。運行gvim72.exe&…

1081. Rational Sum (20) -最大公約數

題目如下&#xff1a; Given N rational numbers in the form "numerator/denominator", you are supposed to calculate their sum. Input Specification: Each input file contains one test case. Each case starts with a positive integer N (<100), followe…