ftp、ssh、http、telnet、httpsphp
腳本執行時間,啓用xdebug,使用WinCacheGrind分析。
數據庫查詢,mysql使用EXPLAIN分析查詢,啓用slow query log記錄慢查詢。html
根據實際狀況自由發揮前端
ASP全名Active Server Pages,是一個WEB服務器端的開發環境,利用它能夠產生和運行動態的、交互的、高性能的WEB服務應用程序。ASP採用腳本語言VB Script做爲本身的開發語言。
PHP是一種跨平臺的服務器端的嵌入式腳本語言。它大量地借用C、Java和Perl語言的語法,並結合本身的特性,使WEB開發者可以快速地寫出動態生成頁面。它支持目前絕大多數數據庫。還有一點,PHP是徹底免費的,不用花錢,你能夠從PHP官方站點自由下載。並且你能夠不受限制地得到源碼,甚至能夠從中加進你本身須要的特點。
JSP是Sun公司推出的新一代站點開發語言,他徹底解決了目前ASP和PHP的一個通病-----腳本級執行(聽說PHP4也已經在Zend的支持下,實現編譯運行)。Sun公司藉助本身在上的不凡造詣,將Java從Java應用程序和Java Applet以外,又有新的碩果,就是Java Server Page。JSP能夠在Serverlet和JavaBean的支持下,完成功能強大的站點。
三者都提供在HTML代碼中混合某種程序代碼、由語言引擎解釋執行程序代碼的能力。但JSP代碼被編譯成Servlet並由Java虛擬機解釋執行,這種編譯操做僅在對JSP頁面的第一次請求時發生。
在ASP、PHP、JSP環境下,HTML代碼主要負責描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。普通的HTML頁面只依賴於Web服務器,而ASP、PHP、JSP頁面須要附加的語言引擎分析和執行程序代碼。程序代碼的執行結果被從新嵌入到HTML代碼中,而後一塊兒發送給瀏覽器。
ASP、PHP、JSP三者都是面向Web服務器的技術,客戶端瀏覽器不須要任何附加的軟件支持。java
要用到服務器資源時纔打開,及時關閉服務器資源,數據庫添加索引,頁面可生成靜態,圖片等大文件單獨服務器,使用代碼優化工具等。mysql
咱們不要爲一個簡單的問題引起一場舌戰,爲工做選擇適合的語言,不要爲工做遷就語言。Perl十分適合用做命令行工具,雖然它在網頁應用上也有不錯的表現,可是它的真正實力在命令行上才能充分發揮。一樣地,PHP雖然能夠在控制檯的環境中使用,可是它在網頁應用上有更好的表現,PHP有大量專門爲網頁應用而設計的函數,Perl則彷佛以命令行爲設計之本。linux
這正是爲什麼我總是告訴別人選擇適當的編程語言,若果你只用一種語言的話你怎麼能回答這道問題?這道問題很簡單,Perl所變量都是以@開頭,例如@myArray,PHP則沿用$做爲全部變量的開頭,例如$myArray。
至於Perl表示散列表則用%,例如%myHash,PHP則沒有分別,還是使用$,例如$myHash。web
使用Xdebug或者Advanced PHP Debugger面試
$dsn='mysql://username:password@localhost/test' $options=array( 'debug'=>2, 'portability'=>DB_PORTABILITY_ALL, ) DB::connect($dsn,$options)//其中options參數是可選的。
PEAR是PHP擴展與應用庫(the PHP Extension and Application Repository)的縮寫。它是一個PHP擴展及應用的一個代碼倉庫,PEAR處理數據庫的模塊是PEAR DB。ajax
題目有點含糊不清,SOAP,XML_RPC,Socket function,CURL均可以實現這些,若是是考慮PHP和Java的整合,PHP內置了這種機制(若是考PHP和.NET的整合,也能夠這麼回答)。
PHP提供了支持JAVA的類庫文件,或者經過HTTP協議來交互數據。正則表達式
開放性題目,沒有固定的算法,能夠經過計算兩個名字的筆畫差來肯定緣分指數。
不作優化的狀況下同樣。
主要就是異步,主進程不會被一個異步任務阻塞,當進程發出命令以後,繼續執行主任務,不用等待子任務執行完,這樣效率更高。
數據庫觸發器和中斷機制是數據庫自動完成的,而ajax觸發器是用戶激發的。ajax把GUI和數據庫異步優化。
$str=file_get_contents('doc.txt'); $str=ucwords($str); file_put_contents('doc.txt',$str);
addslashes
(1).建立新聞發佈系統,表名爲message有以下字段
字段名 | 描述 |
---|---|
id | 文章id |
title | 文章標題 |
content | 文章內容 |
category_id | 文章分類id |
hits | 點擊量 |
建立表語句以下:
CREATE TABLE message( id iNT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, title VARCHAR(200)NOT NULL DEFAULT‘’, content TEXT, category_id INT UNSIGNED NOT NULL DEFAULT 0, hits INT UNSIGNED NOT NULL DEFAULT 0 )engine=InnoDB default charset=utf8
(2).一樣上述新聞發佈系統:表comment記錄用戶回覆內容,字段以下
字段名 | 描述 |
---|---|
comment_id | 回覆id |
id | 文章id,關聯message表中的id |
comment_content | 回覆內容 |
現經過查詢數據庫須要獲得如下格式的文章標題列表,並按照回覆數量排序,回覆最高的排在最前面
文章id文章標題點擊量回複數量
用一個SQL語句完成上述查詢,若是文章沒有回覆則回覆數量顯示爲0
查詢語句以下:
SELECT message.id AS id,title,hits,IF(comment.id is NULL,0,count(*))AS number FROM message LEFT JOIN comment ON message.id=comment.id GROUP BY message.id
(3).上述內容管理系統,表category保存分類信息,字段以下
字段名 | 描述 |
---|---|
category_id | int(4)not null auto_increment; |
categroy_name | varchar(40)not null; |
用戶輸入文章時,經過選擇下拉菜單選定文章分類
寫出如何實現這個下拉菜單
function categoryList(){ $result=mysql_query("select category_id,category_name from category")or die("Invalid query:".mysql_error()); echo"<select name='category'value=''>"; while($row=mysql_fetch_array($result)){ echo"<option value='".$row['category_id']."'>".$row['category_name']."</option>"; } echo"</select>"; }
文件操做部分:上述內容管理系統,用戶提交內容後,系統生成靜態HTML頁面,寫出實現的基本思路。
要生成靜態HTML頁面,須要使用輸出緩衝output buffering及文件操做,首先使用ob_start()函數開啓輸出緩衝,在頁面內容執行完成時,使用ob_get_contents()函數獲取保存在輸出緩衝區中的內容,而後使用file_put_contents()函數,生成靜態HTML頁面便可。
原理同樣,都是利用標準輸入輸出流處理HTTP之類的文本協議,都是經過多進程模式處理多請求。不一樣之處在於FastCGI的一個進程處理完一個請求以後重置狀態並掛起,待下一個請求來時繼續處理;而CGI的一個進程則處理完一個請求後退出,下一個請求來時再建立新進程。
Zend Optimizer能夠加速PHP腳本的執行,提升PHP應用程序的執行速度。實現的原
理是對那些程序在被最終執行以前由運行編譯器(Run-Time Compiler)產生的代碼進行優化。
通常狀況下,執行使用Zend Optimizer的PHP程序比不使用的要快40%到100%。這意
味着網站的訪問者能夠更快的瀏覽網頁,從而完成更多的事務,創造更好的客戶滿意度。
Zend Optimizer還能夠給用Zend加密的文件解密。
sql注入攻擊。
數據庫操做安全,UPDATE、DELETE、INSERT的操做沒有限制用戶操做權限,這將是一件很危險的事情。
沒有驗證用戶http請求的方式POST或者GET,GET請求被合法經過。
沒有驗證表單來源的惟一性,不能識別是合法的表單提交仍是黑客僞造的表單提交。
XSS攻擊。
<?php session_start(); if(isset($_POST['name'])&&!empty($_POST['name'])){ if($_POST['check']==$_SESSION['check']){ echo'正常訪問'; }else{ echo'外部訪問'; } } $token=md5(uniqid(rand(),true)); $_SESSION['check']=$token; ?> <form method="post"action=""> <input type="text"name="name"> <input type="hidden"name="check"value="<?php echo$token;?>"> <input type="submit"> </form>
一是首先提升數據庫的查詢速度,好比增長索引,優化表的結構。
二是優化程序代碼,若是查詢比較多,能夠儘可能用條件查詢,減小查詢語句,好比能用一條查詢語句就不用兩條。
三就是提升服務器的速度,優化服務器,把沒必要要的進程關掉。
24.如下代碼會產生什麼問題,如何解決?
<?php $dir=$_POST['dir']; include("/usr/local/apache/htdoc/inc/$dir"); ?>
不安全,必須對用戶的輸入進行驗證和過濾。
進程是具備必定獨立功能的程序關於某個數據集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位。
線程是進程的一個實體是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。
進程和線程的主要差異在於它們是不一樣的操做系統資源管理方式。進程有獨立的地址空間,一個進程崩潰後,在保護模式下不會對其它進程產生影響,而線程只是一個進程中的不一樣執行路徑。線程有本身的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死掉就等於整個進程死掉,因此多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些。但對於一些要求同時進行而且又要共享某些變量的併發操做,只能用線程,不能用進程。
Linux下經常使用軟件,vim,emacs,tar,openoffice,putty,wget,links,ssh等。
<script>alert(111);</script>
),php端接收數據的時候,應該如何處理?能夠對用戶輸入數據進行轉義,如htmlspecialchars($_POST[‘title’]);
Memcahce是把全部的數據保存在內存當中,採用hash表的方式,每條數據由key和value組成,每一個key是獨一無二的,當要訪問某個值的時候先按照找到值,而後返回結果。
Memcahce採用LRU算法來逐漸把過時數據清除掉。
每一個公司的分工合做狀況各不相同,通常會有策劃,美工,前端開發,後臺開發,維護,優化和推廣等。
參考結構:
3臺Web服務器,兩臺MySQL數據庫服務器,採用Master/Slave同步的方式減輕數據庫負載,Web服務器能夠結合Memcache緩存來減小負載,同時三臺Web服務器內容一致,
能夠採用DNS輪詢的方式來進行負載平衡。
自由發揮
Ajax是Asynchronous JavaScript and XML的縮寫,是JavaScript、XML、CSS、DOM等多個技術的組合。
Ajax的工做原理是一個頁面的指定位置能夠加載另外一個頁面全部的輸出內容,這樣就實現了一個靜態頁面也能獲取到數據庫中的返回數據信息了。因此Ajax技術實現了一個靜態網頁在不刷新整個頁面的狀況下與服務器通訊,減小了用戶等待時間,同時也從而下降了網絡流量,加強了客戶體驗的友好程度。
Ajax的核心技術是XMLHttpRequest,它是JavaScript中的一個對象。
Ajax的優勢是:
(1).減輕了服務器端負擔,將一部分之前由服務器負擔的工做轉移到客戶端執行,利用客戶端閒置的資源進行處理;
(2).在只局部刷新的狀況下更新頁面,增長了頁面反應速度,使用戶體驗更友好。
Ajax的缺點是不利於SEO推廣優化,由於搜索引擎沒法直接訪問到Ajax請求的內容。
題目意思有些模糊,題目本意多是將一個無符號的2進制字符串轉成10進制數,如'10100010',應該獲得10100010的十進制表示162。
<?php function bin2dec($bin){ $temp = strrev($bin); $result = 0; for ($i=0,$len = strlen($temp); $i < $len; $i++) { $result += pow(2,$i) * $temp[$i]; } return $result; } $a = '10100010'; echo bin2dec($a);//結果162 ?>
要求:
請不要使用qsort等系統內置排序函數
請使用你認爲最快最優的方法實現該函數並使排序的性能最高。(嘀嗒團)
<?php // 快速排序實現 function array_sort(&$arr,$left,$right){ if ($left < $right) { $pivot = $arr[$left]; $low = $left; $high = $right; while ($low < $high) { while ($low < $high && $arr[$high]['score'] >= $pivot['score']) { $high--; } $arr[$low] = $arr[$high]; while ($low < $high && $arr[$low]['score'] <= $pivot['score']) { $low++; } } $arr[$low] = $pivot; array_sort($arr,$left,$low-1); array_sort($arr,$low+1,$right); } } $english = array( array('sid'=>1,'score'=>76), array('sid'=>2,'score'=>93), array('sid'=>3,'score'=>68.5), array('sid'=>4,'score'=>82.5), ); $left = 0; $right = count($english) - 1; array_sort($english,$left,$right); print_r($english); ?>
<?php $memcache_obj=new memcache $memcache_obj->connect(‘memcache_host,11211’); $memcache_obj->set(‘varKey’,’varValue’,0,____); ?>
time()+36002431
主要是數據庫的設計系統的架構思想
分頁算法的原理是limit offset,pagesize其中,pagesize是設定好的,而offset則要經過計算獲得,不一樣的頁數對應的offset也不一樣,設當前頁爲currentpage,則offset=(currentpage-1)*pagesize。
要求:
(1).和標記不得計算在長度以內。
(2).截取後的字符串,要保留原有標籤,不過若是最後有一個標籤沒有閉合,則
去掉其開始標籤。
示例:題中的字符串,要截取長度5,則返回的字符串應該爲123ab,要截取長度8,
應返回123abc45。
<?php function cut($str,$len=null){ $last=0; $str_len=strlen($str); $result=''; $result_len=0; do{ $pattern='/<em>(.*?)<\/em>/i'; $num=preg_match($pattern,$str,$m,PREG_OFFSET_CAPTURE,$last); if($num){ $result.=substr($str,$last, $add_len=($m[0][1]-$last<$len-$result_len)?$m[0][1]-$last:$len-$result_len); $result_len+=$add_len; $last=$m[0][1]+strlen($m[0][0]); if($result_len<$len){ if($len-$result_len>=strlen($m[1][0])){ $result.=$m[0][0]; $result_len+=strlen($m[1][0]); }else{ $result.=substr($m[1][0],0,$len-$result_len); break; } } }else{ $result.=substr($str,$last,$len-$result_len); break; } }while($last<$str_len&&$result_len<$len); return$result; } ?>
private long contract_id;
private string contract_number;
private string customer_name;
替換爲
private long contractId;
private string contractNumber;
private string customerName;(鑫衆人云)
<?php $str = "private long contract_id; private string contract_number; private string customer_name;"; $pattern = '/_(\w)/em'; $result = preg_replace($pattern,"strtoupper('\\1')",$str); echo $result; ?>
流行的Ajax框架有jQuery,Prototype,Dojo,MooTools。
Ajax的工做原理是一個頁面的指定位置能夠加載另外一個頁面全部的輸出內容,這樣就實現了一個靜態頁面也能獲取到數據庫中的返回數據信息了。因此Ajax技術實現了一個靜態網頁在不刷新整個頁面的狀況下與服務器通訊,減小了用戶等待時間,同時也從而下降了網絡流量,加強了客戶體驗的友好程度。
在使用Ajax時,涉及到數據傳輸,即將數據從服務器返回到客戶端,服務器端和客戶端分別使用不一樣的腳步語言來處理數據,這就須要一種通用的數據格式,XML和json就是最經常使用的兩種,而json比XML更簡單。
進程,時間片
DOM,SAX,SimpleXML,其中前兩種是通用的解析器,和具體語言無關,而SimpleXML則是PHP提供的解析器。
在PHP中可使用int或字符串來表示(php中沒有日期時間類型),在MySQL中,可使用int,date,datetime,timestamp。
UTF-8編碼是可變長編碼,對於中文而言,一個字符使用3個字節來存儲。
<?php $pattern = '/^1[358]\d{9}(,1[358]\d{9})*$/'; $subject = '13507224985,13833103237'; if (preg_match($pattern,$subject)) { echo "yes"; } ?>
用到的函數ignore_user_abort(),set_time_limit(0),sleep($interval),此代碼只要運行一次後關閉瀏覽器便可。
<?php ignore_user_abort();//關掉瀏覽器,PHP腳本也能夠繼續執行. set_time_limit(0);//經過set_time_limit(0)可讓程序無限制的執行下去 $interval=60*5;//每隔5分鐘運行 do{ //這裏是你要執行的代碼 sleep($interval);//等待5分鐘 }while(true); ?>