php大數(shù)據(jù)處理面試題 php 大數(shù)據(jù)框架

PHP中高級(jí)面試題 – 第三天

一、簡(jiǎn)述一下MongoDB的應(yīng)用場(chǎng)景

創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、湖北網(wǎng)絡(luò)推廣、小程序開發(fā)、湖北網(wǎng)絡(luò)營(yíng)銷、湖北企業(yè)策劃、湖北品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供湖北建站搭建服務(wù),24小時(shí)服務(wù)熱線:13518219792,官方網(wǎng)址:muchs.cn

mongodb 支持副本集、索引、自動(dòng)分片,可以保證較高的性能和可用性。

更高的寫入負(fù)載

默認(rèn)情況下,MongoDB 更側(cè)重高數(shù)據(jù)寫入性能,而非事務(wù)安全,MongoDB 很適合業(yè)務(wù)系統(tǒng)中有大量 “低價(jià)值” 數(shù)據(jù)的場(chǎng)景。但是應(yīng)當(dāng)避免在高事務(wù)安全性的系統(tǒng)中使用 MongoDB,除非能從架構(gòu)設(shè)計(jì)上保證事務(wù)安全。

高可用性

MongoDB 的復(fù)副集 (Master-Slave) 配置非常簡(jiǎn)潔方便,此外,MongoDB 可以快速響應(yīng)的處理單節(jié)點(diǎn)故障,自動(dòng)、安全地完成故障轉(zhuǎn)移。這些特性使得 MongoDB 能在一個(gè)相對(duì)不穩(wěn)定(如云主機(jī))的環(huán)境中,保持高可用性。

數(shù)據(jù)量很大或者未來會(huì)變得很大

依賴數(shù)據(jù)庫 (MySQL) 自身的特性,完成數(shù)據(jù)的擴(kuò)展是較困難的事,在 MySQL 中,當(dāng)一個(gè)單達(dá)表到 5-10GB 時(shí)會(huì)出現(xiàn)明顯的性能降級(jí),此時(shí)需要通過數(shù)據(jù)的水平和垂直拆分、庫的拆分完成擴(kuò)展,使用 MySQL 通常需要借助驅(qū)動(dòng)層或代理層完成這類需求。而 MongoDB 內(nèi)建了多種數(shù)據(jù)分片的特性,可以很好地適應(yīng)大數(shù)據(jù)量的需求。

基于位置的數(shù)據(jù)查詢

MongoDB 支持二維空間索引,因此可以快速及精確地從指定位置獲取數(shù)據(jù)。

表結(jié)構(gòu)不明確

在一些傳統(tǒng) RDBMS 中,增加一個(gè)字段會(huì)鎖住整個(gè)數(shù)據(jù)庫 / 表,或者在執(zhí)行一個(gè)重負(fù)載的請(qǐng)求時(shí)會(huì)明顯造成其它請(qǐng)求的性能降級(jí)。通常發(fā)生在數(shù)據(jù)表大于 1G 的時(shí)候(當(dāng)大于 1TB 時(shí)更甚)。 因 MongoDB 是文檔型數(shù)據(jù)庫,為非結(jié)構(gòu)貨的文檔增加一個(gè)新字段是很快速的操作,并且不會(huì)影響到已有數(shù)據(jù)。另外一個(gè)好處當(dāng)業(yè)務(wù)數(shù)據(jù)發(fā)生變化時(shí),是將不再需要由 DBA 修改表結(jié)構(gòu)。

二、數(shù)據(jù)庫設(shè)計(jì)經(jīng)驗(yàn),為什么進(jìn)行分表?分庫?一般多少數(shù)據(jù)量開始分表?分庫?分庫分表的目的?

1、為什么要分表

當(dāng)一張表的數(shù)據(jù)達(dá)到幾百萬時(shí),你查詢一次所花的時(shí)間會(huì)變多,如果有聯(lián)合查詢的話,有可能會(huì)死在那兒了。分表的目的就在于此,減小數(shù)據(jù)庫的負(fù)擔(dān),縮短查詢時(shí)間。日常開發(fā)中我們經(jīng)常會(huì)遇到大表的情況,所謂的大表是指存儲(chǔ)了百萬級(jí)乃至千萬級(jí)條記錄的表。這樣的表過于龐大,導(dǎo)致數(shù)據(jù)庫在查詢和插入的時(shí)候耗時(shí)太長(zhǎng),性能低下,如果涉及聯(lián)合查詢的情況,性能會(huì)更加糟糕。

分表和表分區(qū)的目的就是減少數(shù)據(jù)庫的負(fù)擔(dān),提高數(shù)據(jù)庫的效率,通常點(diǎn)來講就是提高表的增刪改查效率。數(shù)據(jù)庫中的數(shù)據(jù)量不一定是可控的,在未進(jìn)行分庫分表的情況下,隨著時(shí)間和業(yè)務(wù)的發(fā)展,庫中的表會(huì)越來越多,表中的數(shù)據(jù)量也會(huì)越來越大,相應(yīng)地,數(shù)據(jù)操作,增刪改查的開銷也會(huì)越來越大;另外,由于無法進(jìn)行分布式式部署,而一臺(tái)服務(wù)器的資源(CPU、磁盤、內(nèi)存、IO 等)是有限的,最終數(shù)據(jù)庫所能承載的數(shù)據(jù)量、數(shù)據(jù)處理能力都將遭遇瓶頸。

2、分表的方案

做 mysql 集群,有人會(huì)問 mysql 集群,根分表有什么關(guān)系嗎?雖然它不是實(shí)際意義上的分表,但是它啟到了分表的作用,做集群的意義是什么呢?為一個(gè)數(shù)據(jù)庫減輕負(fù)擔(dān),說白了就是減少 sql 排隊(duì)隊(duì)列中的 sql 的數(shù)量,舉個(gè)例子:有 10 個(gè) sql 請(qǐng)求,如果放在一個(gè)數(shù)據(jù)庫服務(wù)器的排隊(duì)隊(duì)列中,他要等很長(zhǎng)時(shí)間,如果把這 10 個(gè) sql 請(qǐng)求,分配到 5 個(gè)數(shù)據(jù)庫服務(wù)器的排隊(duì)隊(duì)列中,一個(gè)數(shù)據(jù)庫服務(wù)器的隊(duì)列中只有 2 個(gè),這樣等待時(shí)間是不是大大的縮短了呢?

linux mysql proxy 的安裝,配置,以及讀寫分離

mysql replication 互為主從的安裝及配置,以及數(shù)據(jù)同步

優(yōu)點(diǎn):擴(kuò)展性好,沒有多個(gè)分表后的復(fù)雜操作(php 代碼)

缺點(diǎn):?jiǎn)蝹€(gè)表的數(shù)據(jù)量還是沒有變,一次操作所花的時(shí)間還是那么多,硬件開銷大。

三、簡(jiǎn)述一下數(shù)據(jù)庫主從復(fù)制,讀寫分離

* 什么是主從復(fù)制

主從復(fù)制,是用來建立一個(gè)和主數(shù)據(jù)庫完全一樣的數(shù)據(jù)庫環(huán)境,稱為從數(shù)據(jù)庫;

* 主從復(fù)制的原理:

1.數(shù)據(jù)庫有個(gè)bin-log二進(jìn)制文件,記錄了所有的sql語句。

2.只需要把主數(shù)據(jù)庫的bin-log文件中的sql語句復(fù)制。

3.讓其從數(shù)據(jù)的relay-log重做日志文件中再執(zhí)行一次這些sql語句即可。

* 主從復(fù)制的作用

1.做數(shù)據(jù)的熱備份,作為后備數(shù)據(jù)庫,主數(shù)據(jù)庫服務(wù)器故障后,可切換到從數(shù)據(jù)庫繼續(xù)工作,避免數(shù)據(jù)丟失。

2.架構(gòu)的擴(kuò)展。業(yè)務(wù)量越來越大,I/O訪問頻率過高,單機(jī)無法滿足,此時(shí)做多庫的存儲(chǔ),降低磁盤I/O訪問頻率,提高單機(jī)的I/O性能

3.主從復(fù)制是讀寫分離的基礎(chǔ),使數(shù)據(jù)庫能制成更大 的并發(fā)。例如子報(bào)表中,由于部署報(bào)表的sql語句十分慢,導(dǎo)致鎖表,影響前臺(tái)的服務(wù)。如果前臺(tái)服務(wù)使用master,報(bào)表使用slave,那么報(bào)表sql將不會(huì)造成前臺(tái)所,保證了前臺(tái)的訪問速度。

* 主從復(fù)制的幾種方式:

1.同步復(fù)制:所謂的同步復(fù)制,意思是master的變化,必須等待slave-1,slave-2,…,slave-n完成后才能返回。

2.異步復(fù)制:如同AJAX請(qǐng)求一樣。master只需要完成自己的數(shù)據(jù)庫操作即可。至于slaves是否收到二進(jìn)制日志,是否完成操作,不用關(guān)心。MYSQL的默認(rèn)設(shè)置。

3.半同步復(fù)制:master只保證slaves中的一個(gè)操作成功,就返回,其他slave不管。

這個(gè)功能,是由google為MYSQL引入的。

* 關(guān)于讀寫分離

在完成主從復(fù)制時(shí),由于slave是需要同步master的。所以對(duì)于insert/delete/update這些更新數(shù)據(jù)庫的操作,應(yīng)該在master中完成。而select的查詢操作,則落下到slave中。

誰有面試phper的經(jīng)驗(yàn)

這方面網(wǎng)上有比較多的,針對(duì)3-5年的PHPer常見的面試題,參考如下:

1、平時(shí)喜歡哪些php書籍及博客?CSDN、虎嗅、獵云

2、js閉包是什么?

3、for與foreach哪個(gè)更快?

4、php鳥哥是誰?能不能講一下php執(zhí)行原理?

5、php加速器有哪些?apc、zend、xcache.....能不能講一下它的加速原理?

6、Node.js能徹底代替php+apache是扯淡。

7、怎樣判斷一個(gè)值是否存在于數(shù)組中?in_array(),array_key_exists,......

8、怎樣判斷select語句中是否使用了索引?explain

9、sphinx的中文分詞詞庫使用第三方庫還是自己建庫?

10、如果一個(gè)被面試者經(jīng)驗(yàn)少、基礎(chǔ)差,此時(shí)卻問些高深的知識(shí)。要懷疑它的穩(wěn)定性,可以提問加班對(duì)他會(huì)不會(huì)有抵觸。

11、mysql與mysqli的區(qū)別有哪些?

12、將來的發(fā)展方向?安全、還是數(shù)據(jù)挖掘、大數(shù)據(jù)處理?

13、php的面向?qū)ο螅侯惖男揎椃?、封裝、繼承、多態(tài)體現(xiàn)方面

14、php 多態(tài)是什么?

15、Type Hinting:

16、php的設(shè)計(jì)模式:?jiǎn)卫J健⒐S模式、生產(chǎn)者模式......等23種

17、服務(wù)器狀態(tài)碼:200、202、301、404、500......

18、i++與++i的區(qū)別?

19、項(xiàng)目開發(fā):電商項(xiàng)目中的購物車數(shù)據(jù)持久化、考試系統(tǒng)的安全性考慮、

20、mysql設(shè)計(jì)基礎(chǔ):三大范式、功能-思維導(dǎo)圖、創(chuàng)建表的第一字段是什么?

21、mysql字段char、varchar、int、smallint、tinyint、mediumint、bigint、decimal、double、float字節(jié)數(shù)及應(yīng)用場(chǎng)景。

22、memcache與mongoDB、Redis各自的使用場(chǎng)景是什么?

23、為什么mongoDB與Redis非但沒有形成競(jìng)爭(zhēng)反而是互補(bǔ)關(guān)系?

24、Redis數(shù)據(jù)類型有哪些?int、string、hash、set、list ?

25、安裝linux軟件時(shí)使用make方式還使用yum方式?

26、linux網(wǎng)絡(luò)優(yōu)化:查看進(jìn)程ps -aux|grep mysqld、怎樣查看最大文件打開數(shù)?

27、C語言中的虛函數(shù)是什么?

28、1條微薄要推送給100萬個(gè)粉絲該怎么處理?

29、知道哪些算法?冒泡排序?快速排序?二分查找法?

30、yii thinkphp ci 各自優(yōu)點(diǎn)

31、php 設(shè)計(jì)模式有哪些?

32、c 排序算法有哪些?

33、php 基本結(jié)構(gòu)是什么?

34、memcache magent 分布式設(shè)計(jì)?

35、redis 分布式設(shè)計(jì),如何設(shè)計(jì)?

36、mongo 集群架構(gòu)是怎樣的?

37、mysql 索引原理及sql性能優(yōu)化

38、tcp/ip 網(wǎng)絡(luò)協(xié)議,osi7層指是什么?

39、php 處理大數(shù)據(jù)業(yè)務(wù)

40、linux 應(yīng)用 負(fù)載性能查看 ?

41、nginx 實(shí)戰(zhàn)優(yōu)化業(yè)務(wù)功能 ?

42、談一下近三年來你的得意之作?

43、看看簡(jiǎn)歷,會(huì)問一些過去做的項(xiàng)目的用戶量、pv、吞吐量、相關(guān)難點(diǎn)和解決方法等

44、數(shù)據(jù)庫設(shè)計(jì)經(jīng)驗(yàn),為什么進(jìn)行分表? 分庫?

45、一般多少數(shù)據(jù)量開始分表? 分庫? 分庫分表的目的? 什么是數(shù)據(jù)庫垂直拆分? 水平拆分? 分區(qū)等等?可以舉例說明

46、數(shù)據(jù)庫優(yōu)化有哪些? 分別需要注意什么?

47、web開發(fā)方面會(huì)遇到哪些緩存? 分別如何優(yōu)化?

48、給你256M的內(nèi)存,對(duì)10G的文件進(jìn)行排序(文件每行1個(gè)數(shù)字),如何實(shí)現(xiàn)?

49、對(duì)10G的文件進(jìn)行查找如何實(shí)現(xiàn)?

50、統(tǒng)計(jì)10G文件每個(gè)關(guān)鍵字出現(xiàn)的次數(shù)如何實(shí)現(xiàn)?

51、假如你現(xiàn)在是12306火車訂票的設(shè)計(jì)師,你該如何設(shè)計(jì)滿足全國(guó)人民訂票?

52、假如有1億用戶的訪問量,你的服務(wù)器架構(gòu)是怎樣的? 用戶信息的存儲(chǔ)方案如何設(shè)計(jì)?

53、如果你是技術(shù)組長(zhǎng),所帶團(tuán)隊(duì)任務(wù)進(jìn)度無法完成你該如何解決?

54、如果在進(jìn)度排滿的前提下插入任務(wù),你該如何保證總進(jìn)度不延期?

55、如果有的工程師今天預(yù)定任務(wù)沒有完成,你該如何解決?

56、從你的經(jīng)驗(yàn)方面談一下如何構(gòu)建高性能web站點(diǎn)? 需要哪些環(huán)節(jié)? 步驟? 每個(gè)步驟需要注意什么如何優(yōu)化等?

57、為什么要對(duì)數(shù)據(jù)庫進(jìn)行主從分離?

58、如何處理多服務(wù)器共享session?

59、一個(gè)10G的表,你用php程序統(tǒng)計(jì)某個(gè)字段出現(xiàn)的次數(shù),思路是?

60、會(huì)告訴你一個(gè)nginx日志例子,用你認(rèn)為最佳的編程語言統(tǒng)計(jì)一下http響應(yīng)時(shí)間超過1秒的前10個(gè)url?

61、給你一個(gè)mysql配置文件,用你認(rèn)為最佳的編程語言解析該文件?

62、給你兩個(gè)路徑a和b,寫一個(gè)算法或思路計(jì)算a和b差距幾層并顯示a和b的交集?

63、給你一個(gè)url,在nginx配置一下rewrite指定到某個(gè)具體路徑?

64、一個(gè)php文件的解釋過程是? 一般加速php有哪些? 提高php整體性能會(huì)用到哪些技術(shù)?

65、session和cookie生存周期區(qū)別? 存儲(chǔ)位置區(qū)別?

66、require、include、require_once、include_once區(qū)別? 加載區(qū)別? 如果程序按需加載某個(gè)php文件你如何實(shí)現(xiàn)?

67、chrome號(hào)稱為多線程的,所以多線程和多進(jìn)程的區(qū)別為?

68、php在2011年底出現(xiàn)hash碰撞,hash碰撞原理為? 如何進(jìn)行修復(fù)?

69、web不安全因素有哪些? 分別如何防范?

70、假如兩個(gè)單鏈表相交,寫一個(gè)最優(yōu)算法計(jì)算交點(diǎn)位置,說思路也可以?

71、假如你是技術(shù)組長(zhǎng)? 如何提高團(tuán)隊(duì)效率?

72、nginx負(fù)載均衡有哪些? 如果其中一臺(tái)服務(wù)器掛掉,報(bào)警機(jī)制如何實(shí)現(xiàn)?

73、不優(yōu)化前提下,apache一般最大連接數(shù)為? nginx一般最大連接數(shù)為? mysql 每秒insert ? select ? update ? delete?

74、mysql 數(shù)據(jù)類型有哪些 ? 分別占用多少存儲(chǔ)空間 ?

75、nginx設(shè)置緩存js、css、圖片等信息,緩存的實(shí)現(xiàn)原理是?

76、如何提高緩存命中率? 如何對(duì)緩存進(jìn)行顆?;?

77、php的內(nèi)存回收機(jī)制是?

78、我的所有問題都問完了(當(dāng)然沒有這么多),你有什么問題問我沒有?

php處理大數(shù)據(jù)量的時(shí)候,如圖片 有什么致命的缺陷?面試問題

效率問題。因?yàn)閜hp是腳本解釋語言,其特點(diǎn)在于易上手和部署,但在處理需要大量cpu的操作時(shí)(圖片就是)就力不從心了,如果寫成php擴(kuò)展的話效率會(huì)提升,但還是沒直接執(zhí)行C/C++的程序快

不好實(shí)現(xiàn)多線程。這個(gè)就不用多說了,和語言定位有關(guān),雖然可以異步調(diào)用,但畢竟不是強(qiáng)項(xiàng)。

當(dāng)前文章:php大數(shù)據(jù)處理面試題 php 大數(shù)據(jù)框架
URL鏈接:http://muchs.cn/article32/doescsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、定制開發(fā)、網(wǎng)站策劃、服務(wù)器托管做網(wǎng)站、商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司