php2018面試題

1顶捷、PHP語(yǔ)言的一大優(yōu)勢(shì)是跨平臺(tái)蝶念,什么是跨平臺(tái)?一堤尾、PHP基礎(chǔ):

PHP的運(yùn)行環(huán)境最優(yōu)搭配為Apache+MySQL+PHP肝劲,此運(yùn)行環(huán)境可以在不同操作系統(tǒng)(例如windows、Linux等)上配置郭宝,不受操作系統(tǒng)的限制辞槐,所以叫跨平臺(tái)

2、WEB開發(fā)中數(shù)據(jù)提交方式有幾種粘室?有什么區(qū)別榄檬?百度使用哪種方式?

Get與post兩種方式

區(qū)別:1. Get從服務(wù)器獲取數(shù)據(jù)育特,post向服務(wù)器傳送數(shù)據(jù)

2. Get傳值在url中可見丙号,post在url中不可見

4. Get傳值一般在2KB以內(nèi),post傳值大小可以在php.ini中進(jìn)行設(shè)置

5. get安全性非低缰冤,post安全性較高犬缨,執(zhí)行效率卻比Post高

建議:

1、get式安全性較Post式要差些包含機(jī)密信息建議用Post數(shù)據(jù)提交式棉浸;

2怀薛、做數(shù)據(jù)查詢建議用Get式;做數(shù)據(jù)添加迷郑、修改或刪除建議用Post方式枝恋;

百度使用的get方式,因?yàn)榭梢詮乃腢RL中看出

3嗡害、掌握PHP的哪些框架焚碌、模板引擎、系統(tǒng)等

框架:框架有很多霸妹,例如zendframe十电、CI叹螟、Yii等等鹃骂,咱們學(xué)過的是thinkphp

模板引擎:也有很多,在課本中有罢绽,咱們學(xué)過的是smarty

系統(tǒng):有很多畏线,例如:康盛的產(chǎn)品(uchome、supesite良价、discuzX等)寝殴,帝國(guó)系統(tǒng)蒿叠、DEDE(織夢(mèng))、ecshop等杯矩,咱們學(xué)過的是DEDECMS栈虚、Ecshop

4、說一下你所掌握的網(wǎng)頁(yè)前端技術(shù)有哪些史隆?

熟練掌握DIV+CSS網(wǎng)頁(yè)布局魂务,JavaScript,jQuery框架泌射、photoshop圖片處理

5. AJAX的優(yōu)勢(shì)是什么粘姜?

ajax是異步傳輸技術(shù),可以通過javascript實(shí)現(xiàn)熔酷,也可以通過JQuery框架實(shí)現(xiàn)孤紧,實(shí)現(xiàn)局部刷新,減輕了服務(wù)器的壓力拒秘,也提高了用戶體驗(yàn)

6. 安全對(duì)一套程序來說至關(guān)重要号显,請(qǐng)說說在開發(fā)中應(yīng)該注意哪些安全機(jī)制?

①防遠(yuǎn)程提交躺酒;②防SQL注入押蚤,對(duì)特殊代碼進(jìn)行過濾;③防止注冊(cè)機(jī)灌水羹应,使用驗(yàn)證碼揽碘;

7. 在程序的開發(fā)中,如何提高程序的運(yùn)行效率园匹?

①優(yōu)化SQL語(yǔ)句雳刺,查詢語(yǔ)句中盡量不使用select? *,用哪個(gè)字段查哪個(gè)字段裸违;少用子查詢可用表連接代替掖桦;少用模糊查詢;②數(shù)據(jù)表中創(chuàng)建索引供汛;③對(duì)程序中經(jīng)常用到的數(shù)據(jù)生成緩存滞详;

8. PHP可否與其它的數(shù)據(jù)庫(kù)搭配使用?

PHP與MYSQL數(shù)據(jù)庫(kù)是最優(yōu)搭配紊馏,當(dāng)然PHP也可以去其它的數(shù)據(jù)庫(kù)搭配使用,例如MSSQL等蒲犬,PHP中預(yù)留了操作MSSQL的函數(shù)朱监,只要開啟就可以使用

9. 現(xiàn)在編程中經(jīng)常采取MVC三層結(jié)構(gòu),請(qǐng)問MVC分別指哪三層原叮,有什么優(yōu)點(diǎn)赫编?

MVC三層分別指:業(yè)務(wù)模型巡蘸、視圖、控制器擂送,由控制器層調(diào)用模型處理數(shù)據(jù)悦荒,然后將數(shù)據(jù)映射到視圖層進(jìn)行顯示,優(yōu)點(diǎn)是:①可以實(shí)現(xiàn)代碼的重用性嘹吨,避免產(chǎn)生代碼冗余搬味;②M和V的實(shí)現(xiàn)代碼分離,從而使同一個(gè)程序可以使用不同的表現(xiàn)形式

10. 對(duì)json數(shù)據(jù)格式的理解蟀拷?

JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式碰纬,json數(shù)據(jù)格式固定,可以被多種語(yǔ)言用作數(shù)據(jù)的傳遞

PHP中處理json格式的函數(shù)為json_decode( string $json [, bool $assoc ] ) 问芬,接受一個(gè) JSON格式的字符串并且把它轉(zhuǎn)換為PHP變量悦析,參數(shù)json待解碼的json string格式的字符串。assoc當(dāng)該參數(shù)為TRUE時(shí)此衅,將返回array而非object强戴;

Json_encode:將PHP變量轉(zhuǎn)換成json格式

11. Print、echo挡鞍、print_r有什么區(qū)別骑歹?

① echo和print都可以做輸出,不同的是匕累,echo不是函數(shù)陵刹,沒有返回值,而print是一個(gè)函數(shù)有返回值欢嘿,所以相對(duì)而言如果只是輸出echo會(huì)更快衰琐,而print_r通常用于打印變量的相關(guān)信息,通常在調(diào)試中使用炼蹦。

② print? 是打印字符串

③ print_r 則是打印復(fù)合類型? 如數(shù)組 對(duì)象

12. SESSION與COOKIE的區(qū)別羡宙?

①存儲(chǔ)位置:session存儲(chǔ)于服務(wù)器,cookie存儲(chǔ)于瀏覽器

②安全性:session安全性比cookie高

③session為‘會(huì)話服務(wù)’掐隐,在使用時(shí)需要開啟服務(wù)狗热,cookie不需要開啟,可以直接用

14. PHP處理數(shù)組的常用函數(shù)虑省?(重點(diǎn)看函數(shù)的‘參數(shù)’和‘返回值’)

①array()創(chuàng)建數(shù)組匿刮;②count()返回?cái)?shù)組中元素的數(shù)目;③array_push()將一個(gè)或多個(gè)元素插入數(shù)組的末尾(入棧)探颈;④array_column()返回輸入數(shù)組中某個(gè)單一列的值熟丸;⑤array_combine()通過合并兩個(gè)數(shù)組來創(chuàng)建一個(gè)新數(shù)組;⑥array_reverse()以相反的順序返回?cái)?shù)組伪节;⑦array_unique()刪除數(shù)組中的重復(fù)值光羞;⑧in_array()檢查數(shù)組中是否存在指定的值绩鸣;

15. PHP處理字符串的常用函數(shù)?(重點(diǎn)看函數(shù)的‘參數(shù)’和‘返回值’)

①trim()移除字符串兩側(cè)的空白字符和其他字符纱兑;②substr_replace()把字符串的一部分替換為另一個(gè)字符串呀闻;③substr_count()計(jì)算子串在字符串中出現(xiàn)的次數(shù);④substr()返回字符串的一部分潜慎;⑤strtolower()把字符串轉(zhuǎn)換為小寫字母捡多;⑥strtoupper()把字符串轉(zhuǎn)換為大寫字母;⑦strtr()轉(zhuǎn)換字符串中特定的字符勘纯;⑧strrchr()查找字符串在另一個(gè)字符串中最后一次出現(xiàn)局服;⑨strstr()查找字符串在另一字符串中的第一次出現(xiàn)(對(duì)大小寫敏感);strrev()反轉(zhuǎn)字符串驳遵;strlen()返回字符串的長(zhǎng)度淫奔;str_replace()替換字符串中的一些字符(對(duì)大小寫敏感);print()輸出一個(gè)或多個(gè)字符串堤结;explode()把字符串打散為數(shù)組唆迁;is_string()檢測(cè)變量是否是字符串;strip_tags()從一個(gè)字符串中去除HTML標(biāo)簽竞穷;mb_substr()用來截中文與英文的函數(shù)

16. PHP處理時(shí)間的常用函數(shù)唐责?(重點(diǎn)看函數(shù)的‘參數(shù)’和‘返回值’)

date_default_timezone_get()返回默認(rèn)時(shí)區(qū)。

date_default_timezone_set()設(shè)置默認(rèn)時(shí)區(qū)瘾带。

date()格式化本地時(shí)間/日期鼠哥。

getdate()返回日期/時(shí)間信息。

gettimeofday()返回當(dāng)前時(shí)間信息看政。

microtime()返回當(dāng)前時(shí)間的微秒數(shù)朴恳。

mktime()返回一個(gè)日期的 Unix時(shí)間戳。

strtotime()將任何英文文本的日期或時(shí)間描述解析為 Unix時(shí)間戳允蚣。

time()返回當(dāng)前時(shí)間的 Unix時(shí)間戳于颖。

17. PHP處理數(shù)據(jù)庫(kù)的常用函數(shù)?(重點(diǎn)看函數(shù)的‘參數(shù)’和‘返回值’)

請(qǐng)參照php手冊(cè)嚷兔,認(rèn)真查看森渐,此項(xiàng)非常重要

18. PHP操作文件的常用函數(shù)?(重點(diǎn)看函數(shù)的‘參數(shù)’和‘返回值’)

①打開文件冒晰;②刪除文件同衣;③讀取文件;④寫入文件壶运;⑤修改文件乳怎;⑥關(guān)閉文件;⑦創(chuàng)建文件等等,此項(xiàng)非常重要蚪缀,在工作中經(jīng)常用來生成緩存或者靜態(tài)文件,請(qǐng)參照php手冊(cè)恕出,認(rèn)真查看

19. PHP操作目錄(文件夾)的常用函數(shù)询枚?(重點(diǎn)看函數(shù)的‘參數(shù)’和‘返回值’)

①打開目錄;②刪除目錄浙巫;③讀取目錄金蜀;④創(chuàng)建目錄;⑤修改目錄的畴;⑥關(guān)閉目錄等等渊抄,此項(xiàng)非常重要,在工作中經(jīng)常用來創(chuàng)建或者刪除上傳文件的目錄丧裁,創(chuàng)建或者刪除緩存护桦、靜態(tài)頁(yè)面的目錄,請(qǐng)參照php手冊(cè)煎娇,認(rèn)真查看

返回頂部

二二庵、數(shù)據(jù)庫(kù)部分

1. 常見的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)產(chǎn)品有?

答:Oracle缓呛、SQL Server催享、MySQL、Sybase哟绊、DB2因妙、Access等。

2. SQL語(yǔ)言包括哪幾部分票髓?每部分都有哪些操作關(guān)鍵字攀涵?

答:SQL語(yǔ)言包括數(shù)據(jù)定義(DDL)、數(shù)據(jù)操縱(DML),數(shù)據(jù)控制(DCL)和數(shù)據(jù)查詢(DQL)四個(gè)部分炬称。

數(shù)據(jù)定義:Create Table,Alter Table,Drop Table, Craete/Drop Index等

數(shù)據(jù)操縱:Select ,insert,update,delete,

數(shù)據(jù)控制:grant,revoke

數(shù)據(jù)查詢:select

3. 完整性約束包括哪些汁果?

答:數(shù)據(jù)完整性(Data Integrity)是指數(shù)據(jù)的精確(Accuracy)和可靠性(Reliability)。

分為以下四類:

1) 實(shí)體完整性:規(guī)定表的每一行在表中是惟一的實(shí)體玲躯。

2) 域完整性:是指表中的列必須滿足某種特定的數(shù)據(jù)類型約束据德,其中約束又包括取值范圍、精度等規(guī)定跷车。

3) 參照完整性:是指兩個(gè)表的主關(guān)鍵字和外關(guān)鍵字的數(shù)據(jù)應(yīng)一致棘利,保證了表之間的數(shù)據(jù)的一致性,防止了數(shù)據(jù)丟失或無(wú)意義的數(shù)據(jù)在數(shù)據(jù)庫(kù)中擴(kuò)散朽缴。

4) 用戶定義的完整性:不同的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)根據(jù)其應(yīng)用環(huán)境的不同善玫,往往還需要一些特殊的約束條件。用戶定義的完整性即是針對(duì)某個(gè)特定關(guān)系數(shù)據(jù)庫(kù)的約束條件密强,它反映某一具體應(yīng)用必須滿足的語(yǔ)義要求茅郎。

與表有關(guān)的約束:包括列約束(NOT NULL(非空約束))和表約束(PRIMARY KEY蜗元、foreign key、check系冗、UNIQUE) 奕扣。

4.? 什么是事務(wù)?及其特性掌敬?

答:事務(wù):是一系列的數(shù)據(jù)庫(kù)操作惯豆,是數(shù)據(jù)庫(kù)應(yīng)用的基本邏輯單位。

事務(wù)特性:

(1)原子性:即不可分割性奔害,事務(wù)要么全部被執(zhí)行楷兽,要么就全部不被執(zhí)行。

(2)一致性或可串性华临。事務(wù)的執(zhí)行使得數(shù)據(jù)庫(kù)從一種正確狀態(tài)轉(zhuǎn)換成另一種正確狀態(tài)

(3)隔離性芯杀。在事務(wù)正確提交之前,不允許把該事務(wù)對(duì)數(shù)據(jù)的任何改變提供給任何其他事務(wù)银舱,

(4) 持久性瘪匿。事務(wù)正確提交后,其結(jié)果將永久保存在數(shù)據(jù)庫(kù)中寻馏,即使在事務(wù)提交后有了其他故障棋弥,事務(wù)的處理結(jié)果也會(huì)得到保存。

或者這樣理解:

事務(wù)就是被綁定在一起作為一個(gè)邏輯工作單元的SQL語(yǔ)句分組诚欠,如果任何一個(gè)語(yǔ)句操作失敗那么整個(gè)操作就被失敗顽染,以后操作就會(huì)回滾到操作前狀態(tài),或者是上有個(gè)節(jié)點(diǎn)轰绵。為了確保要么執(zhí)行粉寞,要么不執(zhí)行,就可以使用事務(wù)左腔。要將有組語(yǔ)句作為事務(wù)考慮唧垦,就需要通過ACID測(cè)試,即原子性液样,一致性振亮,隔離性和持久性。

5. 什么是鎖鞭莽?

? 答:數(shù)據(jù)庫(kù)是一個(gè)多用戶使用的共享資源坊秸。當(dāng)多個(gè)用戶并發(fā)地存取數(shù)據(jù)時(shí),在數(shù)據(jù)庫(kù)中就會(huì)產(chǎn)生多個(gè)事務(wù)同時(shí)存取同一數(shù)據(jù)的情況澎怒。若對(duì)并發(fā)操作不加控制就可能會(huì)讀取和存儲(chǔ)不正確的數(shù)據(jù)褒搔,破壞數(shù)據(jù)庫(kù)的一致性。

加鎖是實(shí)現(xiàn)數(shù)據(jù)庫(kù)并發(fā)控制的一個(gè)非常重要的技術(shù)。當(dāng)事務(wù)在對(duì)某個(gè)數(shù)據(jù)對(duì)象進(jìn)行操作前星瘾,先向系統(tǒng)發(fā)出請(qǐng)求走孽,對(duì)其加鎖。加鎖后事務(wù)就對(duì)該數(shù)據(jù)對(duì)象有了一定的控制琳状,在該事務(wù)釋放鎖之前融求,其他的事務(wù)不能對(duì)此數(shù)據(jù)對(duì)象進(jìn)行更新操作。

基本鎖類型:鎖包括行級(jí)鎖和表級(jí)鎖

6. 什么叫視圖算撮?游標(biāo)是什么?

答:視圖是一種虛擬的表县昂,具有和物理表相同的功能肮柜。可以對(duì)視圖進(jìn)行增倒彰,改审洞,查,操作待讳,視圖通常是有一個(gè)表或者多個(gè)表的行或列的子集芒澜。對(duì)視圖的修改不影響基本表。它使得我們獲取數(shù)據(jù)更容易创淡,相比多表查詢痴晦。

? 游標(biāo):是對(duì)查詢出來的結(jié)果集作為一個(gè)單元來有效的處理。游標(biāo)可以定在該單元中的特定行琳彩,從結(jié)果集的當(dāng)前行檢索一行或多行誊酌。可以對(duì)結(jié)果集當(dāng)前行做修改露乏。一般不使用游標(biāo)碧浊,但是需要逐條處理數(shù)據(jù)的時(shí)候,游標(biāo)顯得十分重要瘟仿。

7. 什么是存儲(chǔ)過程箱锐?用什么來調(diào)用?

答:存儲(chǔ)過程是一個(gè)預(yù)編譯的SQL語(yǔ)句劳较,優(yōu)點(diǎn)是允許模塊化的設(shè)計(jì)驹止,就是說只需創(chuàng)建一次,以后在該程序中就可以調(diào)用多次兴想。如果某次操作需要執(zhí)行多次SQL幢哨,使用存儲(chǔ)過程比單純SQL語(yǔ)句執(zhí)行要快∩┍悖可以用一個(gè)命令對(duì)象來調(diào)用存儲(chǔ)過程捞镰。

8. 索引的作用?和它的優(yōu)點(diǎn)缺點(diǎn)是什么?

答:索引就一種特殊的查詢表岸售,數(shù)據(jù)庫(kù)的搜索引擎可以利用它加速對(duì)數(shù)據(jù)的檢索践樱。它很類似與現(xiàn)實(shí)生活中書的目錄,不需要查詢整本書內(nèi)容就可以找到想要的數(shù)據(jù)凸丸。索引可以是唯一的拷邢,創(chuàng)建索引允許指定單個(gè)列或者是多個(gè)列。缺點(diǎn)是它減慢了數(shù)據(jù)錄入的速度屎慢,同時(shí)也增加了數(shù)據(jù)庫(kù)的尺寸大小瞭稼。

9. 如何通俗地理解三個(gè)范式??

答:第一范式:1NF是對(duì)屬性的原子性約束腻惠,要求屬性具有原子性环肘,不可再分解;

第二范式:2NF是對(duì)記錄的惟一性約束集灌,要求記錄有惟一標(biāo)識(shí)悔雹,即實(shí)體的惟一性;? 第三范式:3NF是對(duì)字段冗余性的約束欣喧,即任何字段不能由其他字段派生出來腌零,它要求字段沒有冗余。唆阿。

10. 什么是基本表益涧?什么是視圖?

答:基本表是本身獨(dú)立存在的表酷鸦,在 SQL 中一個(gè)關(guān)系就對(duì)應(yīng)一個(gè)表饰躲。? 視圖是從一個(gè)或幾個(gè)基本表導(dǎo)出的表。視圖本身不獨(dú)立存儲(chǔ)在數(shù)據(jù)庫(kù)中臼隔,是一個(gè)虛表

11. 試述視圖的優(yōu)點(diǎn)嘹裂?

答:(1) 視圖能夠簡(jiǎn)化用戶的操作? (2) 視圖使用戶能以多種角度看待同一數(shù)據(jù); (3) 視圖為數(shù)據(jù)庫(kù)提供了一定程度的邏輯獨(dú)立性摔握; (4) 視圖能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù)寄狼。

12. NULL是什么意思

答:NULL這個(gè)值表示UNKNOWN(未知):它不表示“”(空字符串)。對(duì)NULL這個(gè)值的任何比較都會(huì)生產(chǎn)一個(gè)NULL值氨淌。您不能把任何值與一個(gè) NULL值進(jìn)行比較泊愧,并在邏輯上希望獲得一個(gè)答案。

使用IS? NULL來進(jìn)行NULL判斷

13. 主鍵盛正、外鍵和索引的區(qū)別删咱?

主鍵、外鍵和索引的區(qū)別

定義:

主鍵--唯一標(biāo)識(shí)一條記錄豪筝,不能有重復(fù)的痰滋,不允許為空

外鍵--表的外鍵是另一表的主鍵, 外鍵可以有重復(fù)的, 可以是空值

索引--該字段沒有重復(fù)值摘能,但可以有一個(gè)空值

作用:

主鍵--用來保證數(shù)據(jù)完整性

外鍵--用來和其他表建立聯(lián)系用的

索引--是提高查詢排序的速度

個(gè)數(shù):

主鍵--主鍵只能有一個(gè)

外鍵--一個(gè)表可以有多個(gè)外鍵

索引--一個(gè)表可以有多個(gè)唯一索引

14. 你可以用什么來確保表格里的字段只接受特定范圍里的值?

答:Check限制,它在數(shù)據(jù)庫(kù)表格里被定義敲街,用來限制輸入該列的值团搞。

觸發(fā)器也可以被用來限制數(shù)據(jù)庫(kù)表格里的字段能夠接受的值,但是這種辦法要求觸發(fā)器在表格里被定義多艇,這可能會(huì)在某些情況下影響到性能逻恐。

15. 說說對(duì)SQL語(yǔ)句優(yōu)化有哪些方法?(選擇幾條)

(1)Where子句中:where表之間的連接必須寫在其他Where條件之前峻黍,那些可以過濾掉最大數(shù)量記錄的條件必須寫在Where子句的末尾.HAVING最后复隆。

(2)用EXISTS替代IN、用NOT EXISTS替代NOT IN姆涩。

(3) 避免在索引列上使用計(jì)算

(4)避免在索引列上使用IS NULL和IS NOT NULL

(5)對(duì)查詢進(jìn)行優(yōu)化昏名,應(yīng)盡量避免全表掃描,首先應(yīng)考慮在 where 及 order by 涉及的列上建立索引阵面。  

(6)應(yīng)盡量避免在 where 子句中對(duì)字段進(jìn)行 null 值判斷洪鸭,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描

(7)應(yīng)盡量避免在 where 子句中對(duì)字段進(jìn)行表達(dá)式操作样刷,這將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描

16. SQL語(yǔ)句中‘相關(guān)子查詢’與‘非相關(guān)子查詢’有什么區(qū)別?

答:子查詢:嵌套在其他查詢中的查詢稱之览爵。

子查詢又稱內(nèi)部置鼻,而包含子查詢的語(yǔ)句稱之外部查詢(又稱主查詢)。

所有的子查詢可以分為兩類蜓竹,即相關(guān)子查詢和非相關(guān)子查詢

(1)非相關(guān)子查詢是獨(dú)立于外部查詢的子查詢箕母,子查詢總共執(zhí)行一次,執(zhí)行完畢后將值傳遞給外部查詢俱济。

(2)相關(guān)子查詢的執(zhí)行依賴于外部查詢的數(shù)據(jù)嘶是,外部查詢執(zhí)行一行,子查詢就執(zhí)行一次蛛碌。

故非相關(guān)子查詢比相關(guān)子查詢效率高

17. char和varchar的區(qū)別聂喇?

答:是一種固定長(zhǎng)度的類型,varchar則是一種可變長(zhǎng)度的類型蔚携,它們的區(qū)別是:

char(M)類型的數(shù)據(jù)列里希太,每個(gè)值都占用M個(gè)字節(jié),如果某個(gè)長(zhǎng)度小于M酝蜒,MySQL就會(huì)在它的右邊用空格字符補(bǔ)足.(在檢索操作中那些填補(bǔ)出來的空格字符將被去掉)在varchar(M)類型的數(shù)據(jù)列里誊辉,每個(gè)值只占用剛好夠用的字節(jié)再加上一個(gè)用來記錄其長(zhǎng)度的字節(jié)(即總長(zhǎng)度為L(zhǎng)+1字節(jié)).

18. Mysql 的存儲(chǔ)引擎,myisam和innodb的區(qū)別。

答:簡(jiǎn)單的表達(dá):

MyISAM 是非事務(wù)的存儲(chǔ)引擎亡脑;適合用于頻繁查詢的應(yīng)用堕澄;表鎖邀跃,不會(huì)出現(xiàn)死鎖;適合小數(shù)據(jù)奈偏,小并發(fā)

innodb是支持事務(wù)的存儲(chǔ)引擎坞嘀;合于插入和更新操作比較多的應(yīng)用;設(shè)計(jì)合理的話是行鎖(最大區(qū)別就在鎖的級(jí)別上)惊来;適合大數(shù)據(jù)丽涩,大并發(fā)。

19. 數(shù)據(jù)表類型有哪些

? ? ? 答:MyISAM裁蚁、InnoDB矢渊、HEAP、BOB,ARCHIVE,CSV等枉证。

? ? ? MyISAM:成熟矮男、穩(wěn)定、易于管理室谚,快速讀取毡鉴。一些功能不支持(事務(wù)等),表級(jí)鎖秒赤。

? ? ? InnoDB:支持事務(wù)猪瞬、外鍵等特性、數(shù)據(jù)行鎖定入篮〕率荩空間占用大,不支持全文索引等潮售。

20. MySQL數(shù)據(jù)庫(kù)作發(fā)布系統(tǒng)的存儲(chǔ)痊项,一天五萬(wàn)條以上的增量,預(yù)計(jì)運(yùn)維三年,怎么優(yōu)化酥诽?

a. 設(shè)計(jì)良好的數(shù)據(jù)庫(kù)結(jié)構(gòu)鞍泉,允許部分?jǐn)?shù)據(jù)冗余,盡量避免join查詢,提高效率。

b. 選擇合適的表字段數(shù)據(jù)類型和存儲(chǔ)引擎贸辈,適當(dāng)?shù)奶砑铀饕?/p>

c. mysql庫(kù)主從讀寫分離。

d. 找規(guī)律分表游沿,減少單表中的數(shù)據(jù)量提高查詢速度。

e肮砾。添加緩存機(jī)制诀黍,比如memcached,apc等仗处。

f. 不經(jīng)常改動(dòng)的頁(yè)面眯勾,生成靜態(tài)頁(yè)面枣宫。

g. 書寫高效率的SQL。比如 SELECT * FROM TABEL 改為 SELECT field_1, field_2, field_3 FROM TABLE.

21. 對(duì)于大流量的網(wǎng)站,您采用什么樣的方法來解決各頁(yè)面訪問量統(tǒng)計(jì)問題吃环?

答:a. 確認(rèn)服務(wù)器是否能支撐當(dāng)前訪問量也颤。

b. 優(yōu)化數(shù)據(jù)庫(kù)訪問。

c. 禁止外部訪問鏈接(盜鏈), 比如圖片盜鏈郁轻。

d. 控制文件下載翅娶。

e. 使用不同主機(jī)分流。

f. 使用瀏覽統(tǒng)計(jì)軟件好唯,了解訪問量竭沫,有針對(duì)性的進(jìn)行優(yōu)化。

返回頂部

三骑篙、面向?qū)ο蟛糠?/p>

1蜕提、什么是面向?qū)ο?(理解著回答)

答:面向?qū)ο驩O = 面向?qū)ο蟮姆治鯫OA + 面向?qū)ο蟮脑O(shè)計(jì)OOD + 面向?qū)ο蟮木幊蘋OP;通俗的解釋就是“萬(wàn)物皆對(duì)象”靶端,把所有的事物都看作一個(gè)個(gè)可以獨(dú)立的對(duì)象(單元)谎势,它們可以自己完成自己的功能,而不是像C那樣分成一個(gè)個(gè)函數(shù)杨名。

現(xiàn)在純正的OO語(yǔ)言主要是Java和C#它浅,PHP、C++也支持OO镣煮,C是面向過程的。? ?

2鄙麦、簡(jiǎn)述 private典唇、 protected、 public修飾符的訪問權(quán)限胯府。

答:private : 私有成員, 在類的內(nèi)部才可以訪問介衔。

protected : 保護(hù)成員,該類內(nèi)部和繼承類中可以訪問骂因。

public : 公共成員炎咖,完全公開,沒有訪問限制寒波。

3乘盼、堆和棧的區(qū)別?

答:棧是編譯期間就分配好的內(nèi)存空間俄烁,因此你的代碼中必須就棧的大小有明確的定義绸栅;

堆是程序運(yùn)行期間動(dòng)態(tài)分配的內(nèi)存空間,你可以根據(jù)程序的運(yùn)行情況確定要分配的堆內(nèi)存的大小页屠。

4粹胯、XML 與 HTML 的主要區(qū)別

答:(1) XML是區(qū)分大小寫字母的蓖柔,HTML不區(qū)分。?

(2) 在HTML中风纠,如果上下文清楚地顯示出段落或者列表鍵在何處結(jié)尾况鸣,那么你可以省略</p>或者</li>之類的結(jié)束 標(biāo)記。在XML中竹观,絕對(duì)不能省略掉結(jié)束標(biāo)記镐捧。?

(3) 在XML中,擁有單個(gè)標(biāo)記而沒有匹配的結(jié)束標(biāo)記的元素必須用一個(gè) / 字符作為結(jié)尾栈幸。這樣分析器就知道不用 查找結(jié)束標(biāo)記了愤估。?

(4) 在XML中,屬性值必須分裝在引號(hào)中速址。在HTML中玩焰,引號(hào)是可用可不用的。?

(5) 在HTML中芍锚,可以擁有不帶值的屬性名昔园。在XML中,所有的屬性都必須帶有相應(yīng)的值并炮。

5默刚、面向?qū)ο蟮奶卣饔心男┓矫?

答:主要有封裝,繼承,多態(tài)。如果是4個(gè)方面則加上:抽象逃魄。

下面的解釋為理解:

封裝:

封裝是保證軟件部件具有優(yōu)良的模塊性的基礎(chǔ),封裝的目標(biāo)就是要實(shí)現(xiàn)軟件部件的高內(nèi)聚,低耦合,防止程序相互依賴性而帶來的變動(dòng)影響.

繼承:

在定義和實(shí)現(xiàn)一個(gè)類的時(shí)候荤西,可以在一個(gè)已經(jīng)存在的類的基礎(chǔ)之上來進(jìn)行,把這個(gè)已經(jīng)存在的類所定義的內(nèi)容作為自己的內(nèi)容伍俘,并可以加入若干新的內(nèi)容邪锌,或修改原來的方法使之更適合特殊的需要,這就是繼承癌瘾。繼承是子類自動(dòng)共享父類數(shù)據(jù)和方法的機(jī)制觅丰,這是類之間的一種關(guān)系,提高了軟件的可重用性和可擴(kuò)展性妨退。

多態(tài):

多態(tài)是指程序中定義的引用變量所指向的具體類型和通過該引用變量發(fā)出的方法調(diào)用在編程時(shí)并不確定妇萄,而是在程序運(yùn)行期間才確定,即一個(gè)引用變量倒底會(huì)指向哪個(gè)類的實(shí)例對(duì)象咬荷,該引用變量發(fā)出的方法調(diào)用到底是哪個(gè)類中實(shí)現(xiàn)的方法冠句,必須在由程序運(yùn)行期間才能決定。

抽象:

抽象就是找出一些事物的相似和共性之處幸乒,然后將這些事物歸為一個(gè)類轩端,這個(gè)類只考慮這些事物的相似和共性之處,并且會(huì)忽略與當(dāng)前主題和目標(biāo)無(wú)關(guān)的那些方面逝变,將注意力集中在與當(dāng)前目標(biāo)有關(guān)的方面基茵。例如奋构,看到一只螞蟻和大象,你能夠想象出它們的相同之處拱层,那就是抽象弥臼。

6、抽象類和接口的概念以及區(qū)別根灯?

答:抽象類:它是一種特殊的径缅,不能被實(shí)例化的類,只能作為其他類的父類使用烙肺。使用abstract關(guān)鍵字聲明纳猪。

它是一種特殊的抽象類,也是一個(gè)特殊的類桃笙,使用interface聲明氏堤。

(1)抽象類的操作通過繼承關(guān)鍵字extends實(shí)現(xiàn),而接口的使用是通過implements關(guān)鍵字來實(shí)現(xiàn)搏明。

(2)抽象類中有數(shù)據(jù)成員鼠锈,可以實(shí)現(xiàn)數(shù)據(jù)的封裝,但是接口沒有數(shù)據(jù)成員星著。

(3)抽象類中可以有構(gòu)造方法购笆,但是接口沒有構(gòu)造方法。

(4)抽象類的方法可以通過private虚循、protected同欠、public關(guān)鍵字修飾(抽象方法不能是private),而接口中的方法只能使用public關(guān)鍵字修飾横缔。

(5)一個(gè)類只能繼承于一個(gè)抽象類铺遂,而一個(gè)類可以同時(shí)實(shí)現(xiàn)多個(gè)接口。

(6)抽象類中可以有成員方法的實(shí)現(xiàn)代碼剪廉,而接口中不可以有成員方法的實(shí)現(xiàn)代碼。

7. 什么是構(gòu)造函數(shù)炕檩,什么是析構(gòu)函數(shù)斗蒋,作用是什么?

答:構(gòu)造函數(shù)(方法)是對(duì)象創(chuàng)建完成后第一個(gè)被對(duì)象自動(dòng)調(diào)用的方法笛质。它存在于每個(gè)聲明的類中泉沾,是一個(gè)特殊的成員方法。作用是執(zhí)行一些初始化的任務(wù)妇押。Php中使用__construct()聲明構(gòu)造方法跷究,并且只能聲明一個(gè)。

析構(gòu)函數(shù)(方法)作用和構(gòu)造方法正好相反敲霍,是對(duì)象被銷毀之前最后一個(gè)被對(duì)象自動(dòng)調(diào)用的方法俊马。是PHP5中新添加的內(nèi)容作用是用于實(shí)現(xiàn)在銷毀一個(gè)對(duì)象之前執(zhí)行一些特定的操作丁存,諸如關(guān)閉文件和釋放內(nèi)存等。

8柴我、如何重載父類的方法解寝,舉例說明

答:重載,即覆蓋父類的方法艘儒,也就是使用子類中的方法替換從父類中繼承的方法聋伦,也叫方法的重寫。

覆蓋父類方法的關(guān)鍵是在子類中創(chuàng)建于父類中相同的方法包括方法的名稱界睁、參數(shù)和返回值類型觉增。PHP中只要求方法的名稱相同即可。

9. 常用的魔術(shù)方法有哪些翻斟?舉例說明

答:php規(guī)定以兩個(gè)下劃線(__)開頭的方法都保留為魔術(shù)方法逾礁,所以建議大家函數(shù)名最好不用__開頭,除非是為了重載已有的魔術(shù)方法杨赤。

__construct() 實(shí)例化類時(shí)自動(dòng)調(diào)用敞斋。

__destruct() 類對(duì)象使用結(jié)束時(shí)自動(dòng)調(diào)用。

__set() 在給未定義的屬性賦值的時(shí)候調(diào)用疾牲。

__get() 調(diào)用未定義的屬性時(shí)候調(diào)用植捎。

__isset() 使用isset()或empty()函數(shù)時(shí)候會(huì)調(diào)用。

__unset() 使用unset()時(shí)候會(huì)調(diào)用阳柔。

__sleep() 使用serialize序列化時(shí)候調(diào)用焰枢。

__wakeup() 使用unserialize反序列化的時(shí)候調(diào)用。

__call() 調(diào)用一個(gè)不存在的方法的時(shí)候調(diào)用舌剂。

__callStatic()調(diào)用一個(gè)不存在的靜態(tài)方法是調(diào)用济锄。

__toString() 把對(duì)象轉(zhuǎn)換成字符串的時(shí)候會(huì)調(diào)用。比如 echo霍转。

__invoke() 當(dāng)嘗試把對(duì)象當(dāng)方法調(diào)用時(shí)調(diào)用荐绝。

__set_state() 當(dāng)使用var_export()函數(shù)時(shí)候調(diào)用。接受一個(gè)數(shù)組參數(shù)避消。

__clone() 當(dāng)使用clone復(fù)制一個(gè)對(duì)象時(shí)候調(diào)用低滩。

10、$this和self岩喷、parent這三個(gè)關(guān)鍵詞分別代表什么恕沫?在哪些場(chǎng)合下使用?

答:$this 當(dāng)前對(duì)象

self? 當(dāng)前類

parent? 當(dāng)前類的父類

$this在當(dāng)前類中使用,使用->調(diào)用屬性和方法纱意。

self也在當(dāng)前類中使用婶溯,不過需要使用::調(diào)用。

parent在類中使用。

11迄委、類中如何定義常量褐筛、如何類中調(diào)用常量、如何在類外調(diào)用常量跑筝。

答:類中的常量也就是成員常量死讹,常量就是不會(huì)改變的量,是一個(gè)恒值曲梗。

定義常量使用關(guān)鍵字const.

例如:const PI = 3.1415326;

無(wú)論是類內(nèi)還是類外赞警,常量的訪問和變量是不一樣的,常量不需要實(shí)例化對(duì)象虏两,

訪問常量的格式都是類名加作用域操作符號(hào)(雙冒號(hào))來調(diào)用愧旦。

即:類名 :: 類常量名;

12、 作用域操作符::如何使用定罢?都在哪些場(chǎng)合下使用笤虫?

答:調(diào)用類常量

調(diào)用靜態(tài)方法

13、__autoload()方法的工作原理是什么祖凫?

答:使用這個(gè)魔術(shù)函數(shù)的基本條件是類文件的文件名要和類的名字保持一致琼蚯。

當(dāng)程序執(zhí)行到實(shí)例化某個(gè)類的時(shí)候,如果在實(shí)例化前沒有引入這個(gè)類文件惠况,那么就自動(dòng)執(zhí)行__autoload()函數(shù)遭庶。

這個(gè)函數(shù)會(huì)根據(jù)實(shí)例化的類的名稱來查找這個(gè)類文件的路徑,當(dāng)判斷這個(gè)類文件路徑下確實(shí)存在這個(gè)類文件后

就執(zhí)行include或者require來載入該類稠屠,然后程序繼續(xù)執(zhí)行峦睡,如果這個(gè)路徑下不存在該文件時(shí)就提示錯(cuò)誤。

使用自動(dòng)載入的魔術(shù)函數(shù)可以不必要寫很多個(gè)include或者require函數(shù)权埠。

返回頂部

四榨了、ThinkPHP部分

1、常見的PHP框架

答:thinkPHP

yii

ZendFramework

CakePhp

sy

2攘蔽、如何理解TP中的單一入口文件龙屉?

答:ThinkPHP采用單一入口模式進(jìn)行項(xiàng)目部署和訪問,無(wú)論完成什么功能满俗,一個(gè)項(xiàng)目都有一個(gè)統(tǒng)一(但不一定是唯一)的入口转捕。應(yīng)該說,所有項(xiàng)目都是從入口文件開始的漫雷,并且所有的項(xiàng)目的入口文件是類似的瓜富,入口文件中主要包括:

定義框架路徑鳍咱、項(xiàng)目路徑和項(xiàng)目名稱(可選)

定義調(diào)試模式和運(yùn)行模式的相關(guān)常量(可選)

載入框架入口文件(必須)

3降盹、ThinkPHP中的MVC分層是什么?(理解)

答:MVC 是一種將應(yīng)用程序的邏輯層和表現(xiàn)層進(jìn)行分離的方法。ThinkPHP 也是基于MVC設(shè)計(jì)模式的蓄坏。MVC只是一個(gè)抽象的概念价捧,并沒有特別明確的規(guī)定,ThinkPHP中的MVC分層大致體現(xiàn)在:

模型(M):模型的定義由Model類來完成涡戳。

控制器(C):應(yīng)用控制器(核心控制器App類)和Action控制器都承擔(dān)了控制器的角色结蟋,Action控制器完成業(yè)務(wù)過程控制,而應(yīng)用控制器負(fù)責(zé)調(diào)度控制渔彰。

視圖(V):由View類和模板文件組成嵌屎,模板做到了100%分離,可以獨(dú)立預(yù)覽和制作恍涂。

但實(shí)際上宝惰,ThinkPHP并不依賴M或者V ,也就是說沒有模型或者視圖也一樣可以工作再沧。甚至也不依賴C尼夺,這是因?yàn)門hinkPHP在Action之上還有一個(gè)總控制器,即App控制器炒瘸,負(fù)責(zé)應(yīng)用的總調(diào)度淤堵。在沒有C的情況下,必然存在視圖V顷扩,否則就不再是一個(gè)完整的應(yīng)用拐邪。

總而言之,ThinkPHP的MVC模式只是提供了一種敏捷開發(fā)的手段屎即,而不是拘泥于MVC本身庙睡。

4、如何進(jìn)行SQL優(yōu)化技俐?(關(guān)于后邊的解釋同學(xué)們可以進(jìn)行理解乘陪,到時(shí)根據(jù)自己的理解把大體意思說出來即可)

答:

(1)選擇正確的存儲(chǔ)引擎

以 MySQL為例,包括有兩個(gè)存儲(chǔ)引擎 MyISAM 和 InnoDB雕擂,每個(gè)引擎都有利有弊啡邑。

MyISAM 適合于一些需要大量查詢的應(yīng)用,但其對(duì)于有大量寫操作并不是很好井赌。甚至你只是需要update一個(gè)字段谤逼,整個(gè)表都會(huì)被鎖起來,而別的進(jìn)程仇穗,就算是讀進(jìn)程都無(wú)法操作直到讀操作完成流部。另外,MyISAM 對(duì)于 SELECT COUNT(*) 這類的計(jì)算是超快無(wú)比的纹坐。

InnoDB 的趨勢(shì)會(huì)是一個(gè)非常復(fù)雜的存儲(chǔ)引擎枝冀,對(duì)于一些小的應(yīng)用,它會(huì)比 MyISAM 還慢。但是它支持“行鎖” 果漾,于是在寫操作比較多的時(shí)候球切,會(huì)更優(yōu)秀。并且绒障,他還支持更多的高級(jí)應(yīng)用吨凑,比如:事務(wù)。

(2)優(yōu)化字段的數(shù)據(jù)類型

記住一個(gè)原則户辱,越小的列會(huì)越快鸵钝。如果一個(gè)表只會(huì)有幾列罷了(比如說字典表,配置表)庐镐,那么蒋伦,我們就沒有理由使用 INT 來做主鍵,使用 MEDIUMINT, SMALLINT 或是更小的 TINYINT 會(huì)更經(jīng)濟(jì)一些焚鹊。如果你不需要記錄時(shí)間痕届,使用 DATE 要比 DATETIME 好得多。當(dāng)然末患,你也需要留夠足夠的擴(kuò)展空間研叫。

(3)為搜索字段添加索引

索引并不一定就是給主鍵或是唯一的字段。如果在你的表中璧针,有某個(gè)字段你總要會(huì)經(jīng)常用來做搜索嚷炉,那么最好是為其建立索引,除非你要搜索的字段是大的文本字段探橱,那應(yīng)該建立全文索引申屹。

(4)避免使用Select *從數(shù)據(jù)庫(kù)里讀出越多的數(shù)據(jù),那么查詢就會(huì)變得越慢隧膏。并且哗讥,如果你的數(shù)據(jù)庫(kù)服務(wù)器和WEB服務(wù)器是兩臺(tái)獨(dú)立的服務(wù)器的話,這還會(huì)增加網(wǎng)絡(luò)傳輸?shù)呢?fù)載胞枕。即使你要查詢數(shù)據(jù)表的所有字段杆煞,也盡量不要用*通配符,善用內(nèi)置提供的字段排除定義也許能給帶來更多的便利腐泻。

(5)使用 ENUM 而不是 VARCHAR

ENUM 類型是非尘龊酰快和緊湊的。在實(shí)際上派桩,其保存的是 TINYINT构诚,但其外表上顯示為字符串。這樣一來铆惑,用這個(gè)字段來做一些選項(xiàng)列表變得相當(dāng)?shù)耐昝婪吨觥@绲仕拢詣e、民族彤侍、部門和狀態(tài)之類的這些字段的取值是有限而且固定的,那么逆趋,你應(yīng)該使用 ENUM 而不是 VARCHAR盏阶。

(6)盡可能的使用 NOT NULL

除非你有一個(gè)很特別的原因去使用 NULL 值,你應(yīng)該總是讓你的字段保持 NOT NULL闻书。 NULL其實(shí)需要額外的空間名斟,并且,在你進(jìn)行比較的時(shí)候魄眉,你的程序會(huì)更復(fù)雜砰盐。 當(dāng)然,這里并不是說你就不能使用NULL了坑律,現(xiàn)實(shí)情況是很復(fù)雜的岩梳,依然會(huì)有些情況下,你需要使用NULL值冀值。

(7)固定長(zhǎng)度的表會(huì)更快

如果表中的所有字段都是“固定長(zhǎng)度”的坤次,整個(gè)表會(huì)被認(rèn)為是 “static” 或 “fixed-length”胰舆。 例如误续,表中沒有如下類型的字段: VARCHAR恋脚,TEXT见间,BLOB馅袁。只要你包括了其中一個(gè)這些字段,那么這個(gè)表就不是“固定長(zhǎng)度靜態(tài)表”了荒辕,這樣汗销,MySQL 引擎會(huì)用另一種方法來處理。

固定長(zhǎng)度的表會(huì)提高性能抵窒,因?yàn)镸ySQL搜尋得會(huì)更快一些弛针,因?yàn)檫@些固定的長(zhǎng)度是很容易計(jì)算下一個(gè)數(shù)據(jù)的偏移量的,所以讀取的自然也會(huì)很快李皇。而如果字段不是定長(zhǎng)的削茁,那么,每一次要找下一條的話掉房,需要程序找到主鍵茧跋。

并且,固定長(zhǎng)度的表也更容易被緩存和重建卓囚。不過瘾杭,唯一的副作用是,固定長(zhǎng)度的字段會(huì)浪費(fèi)一些空間哪亿,因?yàn)槎ㄩL(zhǎng)的字段無(wú)論你用不用粥烁,他都是要分配那么多的空間贤笆。

5、如何理解 ThinkPHP 3.0 架構(gòu)三(核心 + 行為 + 驅(qū)動(dòng))中的行為讨阻?

答:核心 + 行為 + 驅(qū)動(dòng)

TP官方簡(jiǎn)稱為:CBD

核心(Core):就是框架的核心代碼芥永,不可缺少的東西,TP本身是基于MVC思想開發(fā)的框架钝吮。

行為(Behavior) :行為在新版ThinkPHP的架構(gòu)里面起著舉足輕重的作用埋涧,在系統(tǒng)核心之上,設(shè)置了很多標(biāo)簽擴(kuò)展位搀绣,而每個(gè)標(biāo)簽位置可以依次執(zhí)行各自的獨(dú)立行為。行為擴(kuò)展就因此而誕生了戳气,而且很多系統(tǒng)功能也是通過內(nèi)置的行為擴(kuò)展完成的链患,所有行為擴(kuò)展都是可替換和增加的,由此形成了底層框架可組裝的基礎(chǔ)瓶您。

驅(qū)動(dòng)( Driver ):數(shù)據(jù)庫(kù)驅(qū)動(dòng)麻捻、緩存驅(qū)動(dòng)、標(biāo)簽庫(kù)驅(qū)動(dòng)和模板引擎驅(qū)動(dòng)呀袱,以及外置的類擴(kuò)展贸毕。

框架,即framework夜赵。其實(shí)就是某種應(yīng)用的半成品明棍,就是一組組件,供你選用完成你自己的系統(tǒng)寇僧。簡(jiǎn)單說就是使用別人搭好的舞臺(tái)摊腋,你來做表演。而且嘁傀,框架一般是成熟的兴蒸,不斷升級(jí)的軟件。

6细办、什么是慣例配置橙凳?

答:慣例配置上一頁(yè)下一頁(yè)慣例重于配置是系統(tǒng)遵循的一個(gè)重要思想,系統(tǒng)內(nèi)置有一個(gè)慣例配置文件(位于系統(tǒng)目錄下面的Conf\convention.php)笑撞,按照大多數(shù)的使用對(duì)常用參數(shù)進(jìn)行了默認(rèn)配置岛啸。所以,對(duì)應(yīng)用項(xiàng)目的配置文件茴肥,往往只需要配置和慣例配置不同的或者新增的配置參數(shù)值戳,如果你完全采用默認(rèn)配置,甚至可以不需要定義任何配置文件炉爆。

慣例配置文件會(huì)被系統(tǒng)自動(dòng)加載堕虹,無(wú)需在項(xiàng)目中進(jìn)行加載卧晓。

7、什么是SQL注入赴捞?(理解)

答:SQL注入攻擊是黑客對(duì)數(shù)據(jù)庫(kù)進(jìn)行攻擊的常用手段之一逼裆。一部分程序員在編寫代碼的時(shí)候,沒有對(duì)用戶輸入數(shù)據(jù)的合法性進(jìn)行判斷赦政,注入者可以在表單中輸入一段數(shù)據(jù)庫(kù)查詢代碼并提交胜宇,程序?qū)⑻峤坏男畔⑵礈惿梢粋€(gè)完整sql語(yǔ)句,服務(wù)器被欺騙而執(zhí)行該條惡意的SQL命令恢着。注入者根據(jù)程序返回的結(jié)果桐愉,成功獲取一些敏感數(shù)據(jù),甚至控制整個(gè)服務(wù)器掰派,這就是SQL注入从诲。

8、 ThinkPHP如何防止SQL注入靡羡?(理解)?

答:(1)查詢條件盡量使用數(shù)組方式系洛,這是更為安全的方式;

(2)如果不得已必須使用字符串查詢條件略步,使用預(yù)處理機(jī)制描扯;

(3)開啟數(shù)據(jù)字段類型驗(yàn)證,可以對(duì)數(shù)值數(shù)據(jù)類型做強(qiáng)制轉(zhuǎn)換趟薄;(3.1版本開始已經(jīng)強(qiáng)制進(jìn)行字段類型驗(yàn)證了)

(4)使用自動(dòng)驗(yàn)證和自動(dòng)完成機(jī)制進(jìn)行針對(duì)應(yīng)用的自定義過濾绽诚;

(5)使用字段類型檢查、自動(dòng)驗(yàn)證和自動(dòng)完成機(jī)制等避免惡意數(shù)據(jù)的輸入杭煎。

9憔购、如何開啟調(diào)試模式?調(diào)試模式有什么好處岔帽?

答:開啟調(diào)試模式很簡(jiǎn)單玫鸟,只需要在入口文件中增加一行常量定義代碼:

<?Php,bv

? ? //開啟調(diào)試模式

? ? define('APP_DEBUG', true);

? ? //加載框架入口文件

? ? require './ThinkPHP/ThinkPHP.php';

在完成開發(fā)階段部署到生產(chǎn)環(huán)境后,只需要?jiǎng)h除調(diào)試模式定義代碼即可切換到部署模式犀勒。開啟調(diào)試模式后屎飘,系統(tǒng)會(huì)首先加載系統(tǒng)默認(rèn)的調(diào)試配置文件,然后加載項(xiàng)目的調(diào)試配置文件贾费,調(diào)試模式的優(yōu)勢(shì)在于:

開啟日志記錄钦购,任何錯(cuò)誤信息和調(diào)試信息都會(huì)詳細(xì)記錄,便于調(diào)試褂萧;

關(guān)閉模板緩存押桃,模板修改可以即時(shí)生效;

記錄SQL日志导犹,方便分析SQL唱凯;

關(guān)閉字段緩存羡忘,數(shù)據(jù)表字段修改不受緩存影響;

嚴(yán)格檢查文件大小寫(即使是Windows平臺(tái))磕昼,幫助你提前發(fā)現(xiàn)Linux部署問題卷雕;

可以方便用于開發(fā)過程的不同階段,包括開發(fā)票从、測(cè)試和演示等任何需要的情況漫雕,不同的應(yīng)用模式可以配置獨(dú)立的項(xiàng)目配置文件。

10峰鄙、TP中支持哪些配置模式浸间??jī)?yōu)先級(jí)?

答:ThinkPHP在項(xiàng)目配置上面創(chuàng)造了自己獨(dú)有的分層配置模式吟榴,其配置層次體現(xiàn)在:

慣例配置->項(xiàng)目配置->調(diào)試配置->分組配置->擴(kuò)展配置->動(dòng)態(tài)配置

以上是配置文件的加載順序魁蒜,因?yàn)楹竺娴呐渲脮?huì)覆蓋之前的同名配置(在沒有生效的前提下),所以優(yōu)先順序從右到左煤墙。

11梅惯、TP中的URL模式有哪幾種宪拥?默認(rèn)是哪種仿野?

答:ThinkPHP支持四種URL模式,可以通過設(shè)置URL_MODEL參數(shù)來定義她君,包括普通模式脚作、PATHINFO、REWRITE和兼容模式缔刹。

默認(rèn)模式為:PATHINFO模式球涛,設(shè)置URL_MODEL 為1

12、TP中系統(tǒng)變量有哪些校镐?如何獲取系統(tǒng)變量亿扁?

答:獲取系統(tǒng)變量的方法:

只需要在Action中調(diào)用下面方法:

$this->方法名("變量名",["過濾方法"],["默認(rèn)值"])

13、ThinkPHP框架中D函數(shù)與M函數(shù)的區(qū)別是什么鸟廓?

答:M方法實(shí)例化模型無(wú)需用戶為每個(gè)數(shù)據(jù)表定義模型類从祝,D方法可以自動(dòng)檢測(cè)模型類,如果存在自定義的模型類引谜,則實(shí)例化自定義模型類牍陌,如果不存在,則會(huì)自動(dòng)調(diào)用M方法去實(shí)例化Model基類员咽。同時(shí)對(duì)于已實(shí)例化過的模型毒涧,不會(huì)重復(fù)去實(shí)例化(單例模式)。

返回頂部

五贝室、smarty模板引擎

1. 編譯和緩存區(qū)別契讲?

? smarty的編譯過程就是把模板拿過來仿吞,把里面的標(biāo)簽替換成相應(yīng)php代碼,這就是smarty的編譯怀泊, 其實(shí)就是php和html混合的過程

? smarty的緩存需要手動(dòng)開啟茫藏,smarty的緩存就是把編譯好的文件執(zhí)行后,同時(shí)生成一份靜態(tài)的html頁(yè)面霹琼,再次訪問的時(shí)候务傲,你訪問的就是是html文件了,所以就效率來說枣申,要高一些

2.什么是smarty? Smarty的優(yōu)點(diǎn)是什么?

? ? Smarty是一個(gè)使用PHP寫出來的PHP模板引擎售葡,目的是要使用PHP程序同美工分離,使的程序員改變程序的邏輯內(nèi)容時(shí)不會(huì)影響到美工的頁(yè)面設(shè)計(jì),美工重新修改頁(yè)面時(shí)不會(huì)影響到程序的程序邏輯忠藤,這在多人合作的項(xiàng)目中顯的尤為重要挟伙。(也易于程序的多樣式開發(fā))

Smarty優(yōu)點(diǎn)

1. 速度快:相對(duì)其他模板引擎。

2. 編譯型:采用smarty編寫的程序在運(yùn)行時(shí)要編譯成一個(gè)非模板技術(shù)的PHP文件

3 緩存技術(shù):它可以將用戶最終看到的HTML文件緩存成一個(gè)靜態(tài)的HTML頁(yè)

4. 插件技術(shù):smarty可以自定義插件模孩。

不適合使用smarty的地方

1. 需要實(shí)時(shí)更新的內(nèi)容尖阔。例如像股票顯示,它需要經(jīng)常對(duì)數(shù)據(jù)進(jìn)行更新 2.小項(xiàng)目榨咐。小項(xiàng)目因?yàn)轫?xiàng)目簡(jiǎn)單而美工與程序員兼于一人的項(xiàng)目

3.在模板中使用{$smarty}保留變量

? {$smarty.get.page} //類似在php腳本中訪問$_GET[page]

{smarty.cookies.}

{smarty.post.}

{smarty.session.}

{smarty.server.}

4.在模板中訪問php中的變量

在php腳本中有系統(tǒng)常量和自定義常量?jī)煞N介却,同樣這兩種常量在Smarty模板中也可以被訪問,而且不需要從php中分配块茁,只要通過{$smarty}保留變量就可以直接輸出常量的值齿坷。在模板中輸出常量的示例:

{$smarty.const._MY_CONST_VAL}

{$smarty.const.__FILE__}

5.變量調(diào)解器

{$var|modifier1|modifier2|........}

<{$str}><br>

<{$str|capitalize}><{*首字母大寫*}><br>

<{$str|upper}><{*全部大寫*}><br>

<{$str|lower}><{*全部小寫*}><br>

<{$str|lower|upper}><{*全部大寫,調(diào)節(jié)從左至右*}><br>

<{$leg|truncate}><{*字符串截取数焊,默認(rèn)80個(gè)字符*}><br>

<{$leg|truncate:10}><{*字符串截取永淌,前10個(gè),包括...三個(gè)字符*}><br>

6. php查詢mysql數(shù)據(jù)庫(kù)時(shí)佩耳,查詢中文結(jié)果時(shí)出現(xiàn)的亂碼遂蛀。怎么解決?干厚?李滴??

? 1.文件屬性(另存為)

2.文件meta(設(shè)置瀏覽器解析的時(shí)候)

3. 連接數(shù)據(jù)庫(kù)時(shí)編碼設(shè)定

4. PHP文件中使用header函數(shù)確定編碼

7.緩存機(jī)制

? 如果開啟了緩存萍诱,smarty同時(shí)生成一份靜態(tài)的html頁(yè)面悬嗓,如果在設(shè)定的時(shí)間沒有過期,再次訪問的時(shí)候裕坊,你訪問的就是是html文件了包竹,減少了讀取數(shù)據(jù)庫(kù),所以就效率來說,要高一些周瞎。

8. smarty的賦值和載入模板

? $Smarty->assign(name,value)

? $Smarty->display(‘index.html’)

9.marty模板技術(shù)的用途是什么苗缩?

為了php與html分開,美工和程序員各司其職声诸,互不干擾酱讶。

10. smarty配置主要有哪幾項(xiàng)夜矗?

1. 引入smarty.class.php;

2. 實(shí)例化smarty對(duì)象刁笙;

3. 重新修改默認(rèn)的模板路徑;

4. 重新修改默認(rèn)的編譯后文件的路徑拧揽;

5. 重新修改默認(rèn)的配置文件的路徑慰照;

6. 重新修改默認(rèn)的cache的路徑灶挟。

7. 可以設(shè)置是否開啟cache。

8. 可以設(shè)置左側(cè)和右側(cè)定界符毒租。

11. smarty在使用過程中需要注意哪些細(xì)節(jié)稚铣?

Smarty是基于MVC概念的一種模板引擎,它將一個(gè)頁(yè)面程序分成了兩部分來實(shí)現(xiàn):即視圖層和控制層墅垮,

也就是說smarty技術(shù)將用戶UI與php代碼分離開惕医。

這樣程序員和美工各司其職,互不干擾算色。

12. smarty運(yùn)用過程中要注意以下幾個(gè)問題:

1.正確配置smarty抬伺。主要要實(shí)例化smarty對(duì)象,配置smarty模板文件的路徑剃允;

2.php頁(yè)面中使用assign賦值 和display顯示頁(yè)面沛简;

3.smarty模板文件中不允許出現(xiàn)php代碼段齐鲤,所有的注釋斥废,變量,函數(shù)都要包含在定界符內(nèi)给郊。

A.{}

B. foreach

C. if else

D. include

E. Literal

返回頂部

六牡肉、二次開發(fā)系統(tǒng)(DEDE、ecshop):

1.對(duì)二次開發(fā)的理解

? ? 二次開發(fā)淆九,簡(jiǎn)單的說就是在現(xiàn)有的軟件上進(jìn)行定制修改统锤,功能的擴(kuò)展,然后達(dá)到自己想要的功能炭庙,一般來說都不會(huì)改變?cè)邢到y(tǒng)的內(nèi)核饲窿。

2. MVC? ?

? ? Model(模型)數(shù)據(jù)處理。

? ? View(視圖) 模板顯示焕蹄。

? ? Controller(控制器) 控制流程逾雄。

MVC的概念是什么?各層主要做什么工作?

MVC(即模型-視圖-控制器)是一種軟件設(shè)計(jì)模式或者說編程思想鸦泳。

M指Model模型層银锻,V是View視圖層(顯示層或者用戶界面),C是Controller控制器層做鹰。

使用mvc的目的是實(shí)現(xiàn)M和V分離击纬,從而使得一個(gè)程序可以輕松使用不同的用戶界面。

在網(wǎng)站開發(fā)中钾麸,

模型層一般負(fù)責(zé)對(duì)數(shù)據(jù)庫(kù)表信息進(jìn)行增刪改查更振,

視圖層負(fù)責(zé)顯示頁(yè)面內(nèi)容,

控制器層在M和V之間起到調(diào)節(jié)作用饭尝,控制器層決定調(diào)用哪個(gè)model類的哪個(gè)方法殃饿,

執(zhí)行完畢后由控制器層決定將結(jié)果assign到哪個(gè)view層。

3.二次開發(fā)程序安裝后訪問時(shí)候出現(xiàn)一些警告以及錯(cuò)誤

? ? 根據(jù)錯(cuò)誤芋肠,來修改服務(wù)器配置參數(shù)以及百度

4. 功能乎芳,模板的更換,功能的添加修改

? ? ? 其實(shí)也就是面向?qū)ο蟮膽?yīng)用 用帖池,以及模板的更換類似smarty的使用

5. 用過哪些二次開發(fā)的東西奈惑?

? Dedecms phpcms? ecshop,基本這些的東西如果基礎(chǔ)好了 學(xué)習(xí)起來都是沒問題的睡汹。

6. 像php做一次開發(fā)好肴甸,還是二次開發(fā)好?

一般中小企業(yè)都用cms系統(tǒng)二次開發(fā)囚巴,都是為了效率原在。當(dāng)然如果想一次開發(fā)也行,會(huì)用框架而且時(shí)間充足的話就可以了彤叉,大企業(yè)都是團(tuán)隊(duì)來開發(fā)的庶柿,杜絕版權(quán)問題。

7. 二次開發(fā)過程中很多類與類之間進(jìn)行之間的方法訪問秽浇,是通過什么方式傳遞的浮庐?

? ? ? 不是類繼承而是對(duì)象組合,把實(shí)例化好的對(duì)象通過global傳遞進(jìn)去

8. dedecms如果更換目錄柬焕,后臺(tái)某項(xiàng)就進(jìn)不去了如何解決审残?

? ? 后臺(tái)核心設(shè)置中修改成現(xiàn)在的 項(xiàng)目目錄名稱

9.? dedecms中自定義模型的理解?

在織夢(mèng)系統(tǒng)中有內(nèi)容模型這個(gè)概念斑举,不同內(nèi)容模型可以用來構(gòu)建不同內(nèi)容形式的站點(diǎn)搅轿,在系統(tǒng)中自帶了以下幾種模型:普通文章、圖集富玷、軟件璧坟、商品没宾、分類信息、專題沸柔。通過系統(tǒng)自帶的模型循衰,我們可以用來構(gòu)建不同類型的站點(diǎn),例如:使用圖集可以做一個(gè)圖片站褐澎,用軟件模型構(gòu)建一個(gè)軟件下載站點(diǎn)会钝。

當(dāng)然以上隨系統(tǒng)附帶的模型被稱為系統(tǒng)模型,用戶可以自己定義一些模型工三,比如圖書迁酸、音樂專輯等,自定義了這些模型才可以構(gòu)建更多內(nèi)容形式的站點(diǎn)俭正。

相當(dāng)于我們自動(dòng)添加了表結(jié)構(gòu)奸鬓,適應(yīng)現(xiàn)在當(dāng)前需求的變化

10.? dede中概念,設(shè)計(jì)和使用模板掸读,必須要理解下面幾個(gè)概念

1串远、板塊(封面)模板:

指網(wǎng)站主頁(yè)或比較重要的欄目封面頻道使用的模板,一般用“index_識(shí)別ID.htm”命名儿惫,此外澡罚,用戶單獨(dú)定義的單個(gè)頁(yè)面或自定義標(biāo)記,也可選是否支持板塊模板標(biāo)記肾请,如果支持留搔,系統(tǒng)會(huì)用板塊模板標(biāo)記引擎去解析后才輸出內(nèi)容或生成特定的文件。

2铛铁、列表模板:

指網(wǎng)站某個(gè)欄目的所有文章列表的模板隔显,一般用 “l(fā)ist_識(shí)別ID.htm” 命名。

3饵逐、檔案模板:

表示文檔查看頁(yè)的模板括眠,如文章模板,一般用 “article_識(shí)別ID.htm” 命名梳毙。

4哺窄、其它模板:

一般系統(tǒng)常規(guī)包含的模板有:主頁(yè)模板捐下、搜索模板账锹、RSS、JS編譯功能模板等坷襟,此外用戶也可以自定義一個(gè)模板創(chuàng)建為任意文件奸柬。

11. dede中幾種標(biāo)簽的使用?

列表 內(nèi)容 等標(biāo)簽 只能在其本范圍內(nèi)使用婴程,列表標(biāo)簽只能在列表中使用廓奕,內(nèi)容標(biāo)簽只能在內(nèi)容標(biāo)簽中使用。

全局標(biāo)簽?zāi)茉谒许?yè)面中使用

12.熟悉常用類庫(kù)

(例如:dedesql.class.php);熟悉系統(tǒng)函數(shù)庫(kù)(common.func.php)桌粉;熟悉自定義函數(shù)庫(kù)(extend.func.php)蒸绩;熟悉前臺(tái)入口文件(common.inc.php)

返回頂部

七、微信公眾平臺(tái)開發(fā)

1. 微信運(yùn)行機(jī)制

?

公眾號(hào)與php之間用什么語(yǔ)言通信:Xml

Weixin.php中是如何接收公眾號(hào)數(shù)據(jù)的:

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//接收數(shù)據(jù)? XML數(shù)據(jù)

2. 消息類型

? 微信目前提供了7種基本消息類型铃肯,分別為:

(1)文本消息(text)患亿;

(2)圖片消息(image);

(3)語(yǔ)音(voice)

(4)視頻(video)

(5)地理位置(location)押逼;

(6)鏈接消息(link)步藕;

? ? (7)事件推送(event)

類型。掌握不同的消息類型發(fā)送時(shí)的數(shù)據(jù)傳遞格式

4. 將整個(gè)文件讀入一個(gè)字符串的函數(shù)是

? File_get_contents

5挑格、常用函數(shù)

把xml數(shù)據(jù)解析成對(duì)象的函數(shù)是

simplexml_load_string( )

將字符串轉(zhuǎn)換為數(shù)組的函數(shù)是___ explode_________咙冗,將數(shù)組轉(zhuǎn)化為字符串的函數(shù)是____implode________.

編碼 URL 字符串的字符串是____urlencode________.

6. Sprintf函數(shù)的作用

這個(gè)都是可以查手冊(cè)的。

7. 微信公眾號(hào)出現(xiàn)無(wú)法提供服務(wù)的原因漂彤?

? 1. 網(wǎng)絡(luò)原因 雾消,數(shù)據(jù)接口原因

2. 代碼錯(cuò)誤,怎么推測(cè)原因

? ? ? 修改的哪里檢查一下挫望,如果代碼沒錯(cuò)

? ? 可以輸出數(shù)據(jù) 看一下仪或。用php操作文件

? ? $myfile = fopen("newfile.txt", "w");

? ? $txt ="aaaaaaaaaa";

? ? fwrite($myfile, $txt);

? ? fclose($myfile);

8.? 自定義菜單的事件推送

? ? ? 單擊

? ? ? 單擊跳轉(zhuǎn)鏈接

? ? ? 掃碼推事件

? ? ? 掃碼推且彈出

? ? ? 彈出系統(tǒng)拍照發(fā)圖的事件

? ? ? 彈出微信相冊(cè)發(fā)圖器的事件

? ? ? 彈出地理位置選擇器的事件

9.token的作用

? 安全機(jī)制驗(yàn)證,用于微信服務(wù)器與PHP服務(wù)器之間的安全驗(yàn)證

10. Appid與secrect的作用

? 請(qǐng)求api接口(例如菜單的操作)時(shí)需要傳appid與secrect兩個(gè)值士骤,用來獲取應(yīng)用的授權(quán)碼

返回頂部

八范删、對(duì)于自身掌握的技術(shù)描述:

1. 以PHP+MYSQL為方向,熟練掌握smarty模板引擎拷肌、ThinkPHP框架到旦、微信公眾平臺(tái)開發(fā)、DEDE巨缘、ecshop等二次開發(fā)系統(tǒng)添忘,對(duì)面向?qū)ο笥幸欢ǖ睦斫猓粩?shù)據(jù)庫(kù)方面若锁,熟練掌握MYSQL搁骑、MSSQL等數(shù)據(jù)庫(kù);熟悉在linux下的PHP開發(fā)

2. 前端技術(shù):熟練掌握DIV+CSS網(wǎng)頁(yè)布局又固,javascript仲器,JQuery框架、AJAX技術(shù)仰冠、photoshop圖片處理

3. 一年的項(xiàng)目開發(fā)經(jīng)驗(yàn)乏冀,使用smarty開發(fā)過‘XXXXXXXX’,ThinkPHP開發(fā)過‘XXXXXXXX’洋只,使用微信公眾平臺(tái)開發(fā)過‘就業(yè)服務(wù)網(wǎng)’的公眾號(hào)辆沦,使用織夢(mèng)系統(tǒng)開發(fā)過企業(yè)站等

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末昼捍,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子肢扯,更是在濱河造成了極大的恐慌妒茬,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蔚晨,死亡現(xiàn)場(chǎng)離奇詭異郊闯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蛛株,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門团赁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谨履,你說我怎么就攤上這事欢摄。” “怎么了笋粟?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵怀挠,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我害捕,道長(zhǎng)绿淋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任尝盼,我火速辦了婚禮吞滞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘盾沫。我一直安慰自己裁赠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布赴精。 她就那樣靜靜地躺著佩捞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蕾哟。 梳的紋絲不亂的頭發(fā)上一忱,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音谭确,去河邊找鬼帘营。 笑死,一個(gè)胖子當(dāng)著我的面吹牛琼富,可吹牛的內(nèi)容都是我干的仪吧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鞠眉,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼薯鼠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起械蹋,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤出皇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后哗戈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體郊艘,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年唯咬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了纱注。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胆胰,死狀恐怖狞贱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蜀涨,我是刑警寧澤瞎嬉,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站厚柳,受9級(jí)特大地震影響氧枣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜别垮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一便监、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧碳想,春花似錦茬贵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至葡盗,卻和暖如春螟左,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背觅够。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工胶背, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人喘先。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓钳吟,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親窘拯。 傳聞我的和親對(duì)象是個(gè)殘疾皇子红且,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容