多家互聯網公司PHP面試題

來源:文萃谷 3.06W

引導語:php面試。試題考察是免不了的,以下是小編整理的多家互聯網公司PHP面試題,歡迎參考閲讀!

多家互聯網公司PHP面試題

  一、速普軟件

速普軟件公司。公司規模8人左右,有自己的產品,做企業級OA。做一套php面試題,試題不是很難。面試題和情況大致如下:

1:檢測一個變量是否有設置的函數是否?是否為空的函數是?(2分)

2:echo(),print(),print_r()的區別(3分)

3:表單中 get與post提交方法的區別?

4:session與cookie的區別?

5:用PHP打印出前一天的時間格式是2015-8-10 22:21:21(2分)

6:能夠使HTML和PHP分離開使用的模板引擎(1分)

7:使用哪些工具進行版本控制?(1分)

8:如何實現字符串翻轉?(3分)

9:有一個網頁地址, 比如PHP開發資源網主頁: ,如何得到它的內容?($1分)

10:在PHP中error_reporting這個函數有什麼作用? (1分)

11:JS表單彈出對話框函數是?獲得輸入焦點函數是? (2分)

12:foo()和@foo()之間有什麼區別?(1分)

13:GD庫是做什麼用的? (1分)

14:寫一個函數,能夠遍歷一個文件夾下的所有文件和子文件夾。

15:寫出 SQL語句的格式 : 插入 ,更新 ,刪除 (4分)

表名User Name Tel Content Date

張三 13333663366 大專畢業 2006-10-11

張三 13612312331 本科畢業 2006-10-15

張四 021-55665566 中專畢業 2006-10-15

(a) 有一新記錄(小王 13254748547 高中畢業 2007-05-06)請用SQL語句新增至表中

(b) 請用sql語句把張三的時間更新成為當前系統時間

(c) 請寫出刪除名為張四的全部記錄

  二、同城幫

之前隸屬於360公司,是360的一個分支,現在慢慢獨立出去,屬於創業性質的公司,主要是O2O方面的,面試內容如下:

1:説説項目(他比較感興趣360老兵那個項目,其他項目沒有看),問項目的具體內容,遇到的挑戰,具體解決辦法,緩存的使用,為什使用redis,為什麼使用獨立文件服務器。

2:緩存,問了memcache與redis的區別,redis的優勢之處。怎樣解決memcache命中率低的問題,問了在實際項目中memcache命中率。是否部署過redis服務器。

3:svn與git 的區別,讓説具體的工作流程,使用git 的好處,以及怎樣處理衝突,基本的命令寫了兩個。

4:數據庫

一:數據庫的存儲引擎,myisam與innodb的區別,説出除了這兩種外的其他存儲引擎。

二:int 與bigint的區別,實際使用的時候主鍵選擇哪個?int(10)與int(11)的區別,var_char與char的區別

三:數據庫設計,用户表與登錄表分開的好處,

5:php部分

一:session與cookie的區別

二:分佈式怎樣解決session共享問題(可以從數據庫,ccookie存session,nosql方面解決)

三:get與post的區別

四:php __autoload機制

6:計算機網絡

一:三次握手與四次揮手的過程(主要是畫圖),各個參數的含義

二:http與https的區別,https怎樣保準安全(結合ssl)

7:數據結構

一:鏈表的結構體(線性和鏈式),插入一個元素的操作代碼(紙上寫)

二:排序部分,時間複雜度,寫出一個排序算法。

三:二分查找的思想,時間複雜度

8:開發環境,linux常用命令,apache與ngiax的區別,平常用的開發環境是win還是linux等

面試心得:技術面試大約50分鐘,比較累,,,,還有是問問住宿、交通,畢業、實習時間,到崗時間等,hr人不錯, 面試整體不難,都是常用到的東西,算法要隨手能寫。

  三、新浪微博

一家網絡公司,以服務大中華地區與海外華人為己任。2012年11月新浪註冊用户已突破4億。面試內容做了一套卷子,大約6張(單面),試題大概如下:

1:為什麼想加入新浪,對新浪的印象

2:未來的計劃、目標、打算?

3:有沒有微博號,暱稱是什麼,粉絲數多少?

4:填空:(主要寫結果)

一、判斷null的函數

二、判斷變量是否存在的函數

三、判斷是否為空的函數

5:php轉換json為數:組的函數

6:php 得到前一天的日期,格式如下(2015-08-24 10:20)然後寫入到文件 /usr/test中

7:提取url,要求從"sina"中提取url部分(要求使用兩種方法)

8:連續子數組的最大和例如輸入數組為{1,-2,3,10,-4,7,2,5}最大的子數組{3,10,-4,7,2}和為18

9:寫出常見的linux命令功能:top、ps、mv、find、df、cat、chmod、chgrp、grep、wc

10:寫出linux查看80端口的命令

11:有一個ip日誌文件每行一個ip,統計某一個ip出現的次數

12:數據庫設計,有一個發佈文章的數據字段:文章id,文章標題,發表人,類別id,子類別id,所屬地id,創建時間,狀態

問題:一:劃出數據庫設計圖(表之間的關係),表可以自己添加,説明這樣設計的目的,好處

二:寫出創建創建文章表的語句,説説選擇字段的依據。

三:寫出查找最新發表的10篇文章的sql語句,説説優化的方法。

13:系統設計

場景:現在要做一個用户日程提醒系統,需求如下,可以記錄用户每天的日程,代辦日程到了以後,以短信或者是郵箱的形式通知用户,用户可以查看歷史日程,可以管理自己的日程(增刪改查),用户有好友,可以查看好友開放出來的日程,可以進行好友聊天。

要求:一:考慮併發性。

二:用户量在千萬級別,日程數量在億,10億級別

三:保證安全、首頁家在流暢

四:使用緩存服務器

問題:一:你感覺這個系統的難點在什麼地方

二:這個系統各個模塊之間的關係,

三:這個系統實施的具體細節(緩存,大數據方面)

四:系統的安全性怎樣保證

一面(技術面):

1:主要是關於這個系統的數據表設計

2:這個系統當用户比較多的時候可能反應較慢,怎樣解決

回答:利用緩存來解決頻繁的數據庫查找,用户的好友關係、好友的歷史日程,我的歷史日程可以緩存,他問當好友關係發生變化的時候怎樣處理,一開始我説清除緩存,下次查詢直接查數據庫,他説這樣不好,這樣數據庫壓力瞬間變大,讓我再想想,我説可以清除緩存的後在查數據庫恢復緩存,他説不是最好的解決方法,最後他説可以先更新數據庫,然後根據更新的好友關係在更新緩存(少查了一次數據庫,其實很簡單)。

3:這個系統的首頁加載比較慢怎樣辦?

開始我説,採用頁面靜態化,他説首頁是動態加載,頁面靜態化沒有效果,反而會拖慢系統,文件IO需要消耗性能,讓我想想還有什麼辦法,我説緩存首頁數據,但是要注意緩存更新時間。

4:登陸問題,慢慢的系統的登陸比較慢,你知道為什麼嗎,怎樣解決

我説應該是用户量太大,登陸的SQL語句優化不好,或者是沒有加索引,他説加上索引並且SQL優化到最好,還是比較慢是什麼問題,我説是用户量實在太大了,超出了mysql的單表容量了,他問該怎麼解決。我説可以水平拆分,緩解數據增長的壓力,他説什麼是數據庫拆分,水平拆分和垂直拆分有什麼區別我説垂直拆分解決表與表之間的IO競爭,不解決單表中數據量增長出現的壓力,把不向關的表放在其他的服務器上,水平拆分解決單表中數據量增長出現的壓力,不解決表與表之間的IO爭奪,感覺自己不是多懂,他説怎麼拆分依據是什麼(我對拆分只是瞭解)我説可以按照時間拆分,他説但是這樣的拆分沒有一點用,他説你再想想,我説我感覺可以,拆分之後單表數據變小了,查詢肯定快啊,他説你登錄的時候怎樣確定用户在哪個表裏面呢?我説在hash把用户與分表的關係hash到一個表裏面,他説不是最好的解決辦法,並且hash麻煩,需要確定那張表才能進行查找。。。他讓我再想想,我從存儲過程,數據庫緩存來説,最後他説不好使,他説你可以採用用户名分表,用户名(a-z)分26個表,登陸的時候一下就可以找到他在的那張表了。這個問題大約談了30分鐘,回答的不是多好。

5:第三方登錄問題

他問做過第三方登陸沒有,我説我自己嘗試過,利用qq做第三方登錄,主要調用的騰訊提供的的接口,他又問我第三方登陸的'原理,奧師認證方面的,原理,説説https的安全傳輸原理。

6:接口

他問我做過接口沒有,我説做過,他問接口怎樣判斷用户登錄,我説是生成token,他問token的生成原理,token的安全怎樣解決,token被劫持了該怎樣半,有什麼好的辦法。token被劫持我不知道該怎麼處理,這個可以查一查,反正當時我沒想到好辦法,我從token的生成規則,過期時間,添加令牌方面回答的,他説還可以。

二面:(技術、項目面試)

1:問我為什麼想加入新浪微博

2:説一下項目,他問360抗戰老兵那個,他訪問這個網站,問了系統的測試,開發細節,緩存那塊問題,問了mc與redis的區別,內存管理的不同

3:訪問了我的個人網站,説可以下網站的架構和部署

4:問我想找什麼樣的工作,我説想找網站後台,或者是app接口開發的工作

5:問我最有沒有學習新的東西,想學什麼新東西,我説可以看看nodjs 想關注php7

總結:一面技術面大約60分鐘,主要問了數據庫方面的,感覺自己回答的不是很好,二面也是技術面,主要是問項目(360老兵那個,大家對這個項目比較敏感),面試到12:30左右。整體感覺還行,問的都是數據庫方面的優化,表拆分,大數據的處理方法等等。最後讓我第二天等結果,第二天hr打電話説面試通過,説了實習的事,週一上班,週二辦理手續

  四、美麗説

國內最大的女性快時尚電子商務平台,致力於為年輕時尚愛美的女性用户提供最流行的時尚購物體驗,擁有超過1億的女性註冊,面試內容做了一套卷子,試題如下:

1:mysql的索引是那種數據結構,為什麼使用這種數據結構。

2:設計一個數據表,用來存儲url信息,此表會經常發生插入刪除操作,應用場景是查找某個url是否存在,請寫出表結構,並加説明。

3:比較單詞a 和 b判斷b單詞的字母是否都在a中。

4:寫一個timer類,用來統計應用程序的運行時間,並寫出調用方法。

5:session與cookie的區別,説明禁用cookie後 session還能不能運行

6:新浪微博一年產生的數據量是多少,應該怎麼存儲這些數據。

7:狀態嗎:204,304,404的含義,

8:介紹你瞭解的開源項目

一面(技術面):

1:介紹php的魔術方法

2:索引的最左原則

3:數據庫sql的優化,哪些sql語句執行會忽略索引。

4:策略問題: 4個人過橋,a要1分鐘, b要2分鐘,c 要5分鐘,d要10分鐘,兩人同時過橋,過橋速度以慢的為準,一人拿手電,過完橋後一個人吧手電送回來,問最快多長時間過完橋。

二面(技術面,問題):

1:説説項目,360老兵那個。

2:瀏覽器輸入url到頁面呈現,經過的過程,

3:mc與redis的區別,內存管理方面。

三面(hr面):

hr是個漂亮的妹子,聊得很開心,主要涉及工作打算,生活住宿方面的,大學學習經歷,是否瞭解美麗説這個公司等等。最後讓回去等通知。

總結:美麗説,公司挺大的,一面感覺還是數據庫方面有點吃力,主要是數據庫底層方面的討論不是多好。關於策略類型的問題,一般要不是你見過,基本上打不出來,但是不能説自己不會,你應該給出自己的見解,即使不完全正確。最後回去等通知,説是還有一個hr今天不在,如果覺得可以26號會打電話通知我來複試。。。最後還真給我打電話讓我去複試,時間是27號。

  五、360金融

筆試題:

1:寫出PHP中以 array_ 開頭的函數,並説明用法,至少寫6個

2:mysql常用的存儲引擎,説出3個以上,並寫出每個應用場景,優缺點

3:redis與MC的區別,寫出其中一個的內存管理機制

4:查看 Apache 80端口的命令

5:用C語言實現php中的base64編碼函數

6:用PHP寫出快速排序

面試問:

1:微博中reids的應用場景,redis的內存分配機制,為什麼使用redis不適用MC,mc與redis的併發哪個較高

2:array_map的使用場景,array_merge(),合併數組之後的鍵名變換情況

3:php幾個編碼函數區別(json_encode, http_build_query, urlencode等區別)

4:正則表達式中 . * + / 的含義

5:給定一個數字,2進制轉換成16進制

  六、美*網

筆試題:

1:打印前一天的日期時間格式:2016.03.18 10:15:12,打印上個月的最後一天的日期

2:説出 empty(),isset() array_key_exits();的區別

3:瀏覽器地址欄輸入 以後發生的事情,和用到的協議

4:從連接中()提取出url

5:PHP發送強求的方法,有什麼不同點

6:寫出10個mysql 的字段類型,説明使用場景

7:一個數據表,70個字段,10G的數據量,每天50w的數據增量,説出有哪些優化的方法

8:寫一個定時任務,每天2點到8點,每隔10分鐘調用一次PHP腳本 /data/www/

9:寫出查看php-fpm進程數的linux命令

10:寫一個函數,判斷重一副撲克牌中隨機抽出的5張牌是不是順子,順子的定義:5張牌是連續的牌比如 23456

其中2-10是原數字,A是1,J是11,Q是12,k是13,小王大王是任意數。

  七、瓜子二手車

一面(技術面):

1、介紹一個寫過的項目,畫出架構和技術點

2、coding 楊輝三角,求m行n列的值

3、使用正則表達式判斷ip的合法性,要考慮全面

4、redis和MC的內存管理機制

5、redis中數據存儲方式,各種數據結構應用的場景,redis做消息隊列與專業的消息隊列有什麼區別和優勢

5、最左原則的原理和sql的優化機制,什麼時候不會用到索引。

6、分條件查詢的優化和系統設計與架構

7、你最近學習的新技術,你對架構師的理解,你對GO語言的理解,速度快嗎?快在哪?

二面(技術面):

8、一條sql語句的優化機制,大數據分頁處理

9、矩陣的規律遍歷,寫出遍歷的代碼

10、上司與你的關係,怎樣保證工作與生活的協調等等

11、抓取 頁面,把含有a便籤中的href全部抓取,如果url含有 就把該條url標題上guazi,然後再抓取該鏈接對應的頁面,這樣不斷的遵化你抓取,你怎樣解決死循環問題和頁面抓取效率問題。

  八、百度外賣

一面(技術面):

1、説項目,介紹知識點,畫結構圖

2、數據庫最左原則含義用法

3、一個日誌文件,打印某一時刻的併發數(記錄日誌的條數)

4、一個數組按照固定的值排序(按照id排序)

$a = [

['abc'] => ['id' => 1, 'value' => 233],

['bcd'] => ['id' => 2, 'value' => 463]

]

二面(技術面):

1、説説項目

2、數據庫最左原則

3、數據庫索引建立的原則

4、數據庫引擎,説出特點

5、redis和MC的優缺點,都在什麼場景下使用

6、打印日誌文件中,出現最多的前100個IP

7、説出linux中常用的命令

8、php 和其他語言不同的地方,PHP中弱類型的實現

9、C語言中結構體和共用體的區別,每個佔用做少內存(二者已給出)

10、有沒有自己寫的一些作品,或者開源的東西

11、系統設計:百度外賣活動中的秒殺怎麼設計,注意點是什麼

三面(技術面):

1、介紹做的項目,畫出你做的一個模塊的流程和開發關鍵點

2、有沒有學習新的東西,比如新的技術,語言

3、GO 語言看過嗎,有什麼優點,用在什麼地方合適

4、為什麼選擇百度外賣

5、為什麼不願意留在原公司,離職的原因在哪

四面(技術面):

1、介紹一個最深刻的項目,説出技術點

2、coding:一個數組 0 - n-1,已經排好序,打印出滿足 a[i]+a[j] = c 的所有i和j,説出時間複雜度

3、以後有什麼打算,學習的目標或者是自己的規劃目標

4、收到的offer都有哪些,為什麼沒有選擇這些公司

5、原來後台項目有多少個人,每一個人的技術實力在哪

熱門標籤