面試之前多看看公司的資料,可以看出面試的公司主要做什么,電商暴氏,數(shù)據(jù)庫延塑,PHP函數(shù),SQL的優(yōu)化答渔,接口关带,session和cookie等經(jīng)常會問到,都是必問之題研儒,這其中有一部分題目整理自網(wǎng)絡豫缨,個人感覺回答的也不錯
1.請自我介紹一下?
????????答:根據(jù)自己情況回答
2.你是公司負責那些項目?
????????答:由于我們公司是一個外包公司,很多項目都是交叉進行的,論壇端朵,微信好芭,商城我都做過,我主要負責的模塊有.....;
3.你為什么來深圳?
????????答:根據(jù)自己情況回答,最好真實一些.
4.現(xiàn)在在武漢什么框架比較流行?
? ? ? ? 答:根據(jù)自己的區(qū)域回答;
5.你做過那些模塊?
????????答:登陸注冊,商品管理冲呢,購物車模塊舍败,訂單管理等;
6.你們公司是使用什么框架?
????????答:我們公司采用的是TP框架,運用的MySQL+APACHE+ PHP進行開發(fā)敬拓,因 為TP框架是一個免費開源的邻薯,輕量級的,PHP的開發(fā)框架,而且是我們中國人自己開發(fā)的乘凸,也是國內用的比較多的厕诡,并且各種資料也比較齊全;
7.什么是mvc?相互間有什么關系?
????????答:MVC是一種開發(fā)模式营勤,主要分為三部分:M(模型)灵嫌,也就是模型,負責數(shù)據(jù)的操作; V(視圖)葛作,也就是視圖寿羞,負責前后臺的顯示; C(控制器),也就是控制器赂蠢,負責業(yè)務邏輯;
? ? ? ? ? ? ? ? 客戶端請求項目的控制器,如果執(zhí)行過程中需要用到數(shù)據(jù),控制器就會到模型中獲取數(shù)據(jù),再將獲取到的數(shù)據(jù)通過視圖顯示出來;
8.OOP是什么?
????????答:oop是面向對象編程,面向對象編程是一種計算機編程架構,OOP 的一條基本原則是計算機程序是由單個能夠起到子程序作用的單元或對象組合而成绪穆。
OOP具有三大特點:
1、封裝性:也稱為信息隱藏虱岂,就是將一個類的使用和實現(xiàn)分開玖院,只保留部分接口和方法與外部聯(lián)系,或者說只公開了一些供開發(fā)人員使用的方法第岖。于是開發(fā)人員只 需要關注這個類如何使用司恳,而不用去關心其具體的實現(xiàn)過程,這樣就能實現(xiàn)MVC分工合作绍傲,也能有效避免程序間相互依賴,實現(xiàn)代碼模塊間松藕合。?
2烫饼、繼承性:就是子類自動繼承其父級類中的屬性和方法猎塞,并可以添加新的屬性和方法或者對部分屬性和方法進行重寫。繼承增加了代碼的可重用性杠纵。PHP只支持單繼承荠耽,也就是說一個子類只能有一個父類。?
3比藻、多態(tài)性:子類繼承了來自父級類中的屬性和方法铝量,并對其中部分方法進行重寫。于是多個子類中雖然都具有同一個方法银亲,但是這些子類實例化的對象調用這些相同的方法后卻可以獲得完全不同的結果慢叨,這種技術就是多態(tài)性。多態(tài)性增強了軟件的靈活性务蝠。?
1拍谐、易維護?
采用面向對象思想設計的結構,可讀性高馏段,由于繼承的存在轩拨,即使改變需求,那么維護也只是在局部模塊院喜,所以維護起來是非常方便和較低成本的亡蓉。?
2搭综、質量高?
在設計時区丑,可重用現(xiàn)有的,在以前的項目的領域中已被測試過的類使系統(tǒng)滿足業(yè)務需求并具有較高的質量术幔。?
3元咙、效率高?
在軟件開發(fā)時梯影,根據(jù)設計的需要對現(xiàn)實世界的事物進行抽象,產(chǎn)生類庶香。使用這樣的方法解決問題甲棍,接近于日常生活和自然的思考方式,勢必提高軟件開發(fā)的效率和質量赶掖。?
4感猛、易擴展?
由于繼承、封裝奢赂、多態(tài)的特性陪白,自然設計出高內聚、低耦合的系統(tǒng)結構膳灶,使得系統(tǒng)更靈活咱士、更容易擴展立由,而且成本較低。
9 .smarty是什么序厉,有什么作用锐膜?
? ? ? ?回答一:smarty是用php寫出來的模板引擎,也是目前業(yè)界最著名的php模板引擎之一,它分離了邏輯代碼和外在的顯示,提供了一種易于管理和使用的方法,用來將混雜的php邏輯代碼與html代碼進行分離
? ? ? ? 回答二:smarty是php中最著名的引擎框架之一,我們公司使用的是TP框架,已經(jīng)封裝好了smarty模板,所以沒有單獨使用過
? ? ? ? ?回答三: smarty是個模板引擎,最顯著的地方就是有可以把模板緩存起來弛房。一般模板來說道盏,都是做一個靜態(tài)頁面,然后在里面把一些動態(tài)的部分用一切分隔符切開文捶,然后在PHP里打開這個模板文件荷逞,把分隔符里面的值替換掉,然后輸出來粹排,你可以看下PHPLib里面的template部分种远。
? ? 而smarty設定了緩存參數(shù)以后,第一次運行時候會把模板打開恨搓,在php替換里面值的時候把讀取的html和php部分重新生成一個臨時的php文件院促,這樣就省去了每次打開都重新讀取html了。如果修改了模板斧抱,只要重新刷下就行了常拓。
10.TP框架有哪些優(yōu)點?
????????答:ThinkPHP 框架是 PHP 最常見的框架之一,也是目前市面上的主流框架辉浦。ThinkPHP 是一個免費開源的弄抬,快速、簡單的面向對象的輕量級 PHP 開發(fā)框架 宪郊,是為了敏捷 WEB 應用開發(fā)和簡化企業(yè)應用開發(fā)而誕生的掂恕。ThinkPHP 從誕生以來一直秉承簡潔 實用的設計原則,在保持出色的性能和至簡的代碼的同時弛槐,也注重易用性懊亡。并且擁有眾多的原創(chuàng)功能和特性,在易用性乎串、擴展性和性能方面不斷優(yōu)化和改進店枣,已經(jīng)成長為國內最領先和最具影響力的 WEB 應用開發(fā)框架,眾多的典型案例確碧居可以穩(wěn)定用于商業(yè)以及門戶級的開發(fā)鸯两。
11.TP的特性有哪些?
????????答: 1.多表查詢非常方便,在model中幾句代碼就可以完成對多表的關聯(lián)操作
? ? ? ? ? ? ? ?2.融合了smarty模板,使前后臺分離
? ? ? ? ? ? ? ?3.支持多種緩存技術,尤其對memcache技術支持非常好
? ? ? ? ? ? ? ?4.命名規(guī)范,模型,視圖,控制器嚴格遵循命名規(guī)則,通過命名一一對應
? ? ? ? ? ? ? ?5.支持多種url模式
? ? ? ? ? ? ? ?6.內置ajax返回方法,包括xml,json,html等
? ? ? ? ? ? ? ?7.支持應用擴展,類庫擴展,驅動擴展等
12.TP框架中的大字母函數(shù)?
U:對url的組裝
A:內部實例化控制器
S:緩存處理
R:調用某個控制器的操作方法
D:實例化自定義模型類
M:實例化基礎模型類
I:獲取參數(shù)
L:設置或者獲取當前語言
C:設置或獲取,保存配置
13.請介紹一下laravel框架?
????????答: laravel框架的設計思想比較先進,非常適合應用各種開發(fā)模式,作為一個框架,它為你準備好了一切,composer是php的未來,沒有composer,php肯定要走向沒落
? ? laravel框架最大的特點和優(yōu)秀之處就是集合了php比較新的特點,以及各種各樣的設計模式,Ioc模式,依賴注入等
14.laravel有那些特點?
????????回答一:?
? ? ? ? ? 1.強大的rest router:用簡單的回調函數(shù)就可以調用,快速綁定controller和router
? ? ? ? ? 2.artisan:命令行工具,很多手動的工作都自動化
? ? ? ? ? 3.可繼承的模板,簡化view的開發(fā)和管理
? ? ? ? ? 4.blade模板:渲染速度更快
? ? ? ? ? 5.ORM操作數(shù)據(jù)庫
? ? ? ? ? 6.migration:管理數(shù)據(jù)庫和版本控制
? ? ? ? ? 7.測試功能也很強大
? ? ? ? ? 8.composer也是亮點
? ???? 回答二: laravel框架引入了門面,依賴注入,Ioc模式,以及各種各樣的設計模式等
15.簡述一下數(shù)據(jù)庫的優(yōu)化?
????????答:數(shù)據(jù)庫的優(yōu)化可以從四個方面來優(yōu)化:
????????????1.從結構層: web服務器采用負載均衡服務器,mysql服務器采用主從復制,讀寫分離
????????????2.從儲存層: 采用合適的存儲引擎,采用三范式
????????????3.從設計層: 采用分區(qū)分表,索引,表的字段采用合適的字段屬性,適當?shù)牟捎媚娣妒?開啟mysql緩存
????????????4.sql語句層:結果一樣的情況下,采用效率高,速度快節(jié)省資源的sql語句執(zhí)行
16.如何解決異常處理?
????????答: 拋出異常:使用try...catch,異常的代碼放在try代碼塊內长豁,如果沒有觸發(fā)異常钧唐,則代碼繼續(xù)執(zhí)行,如果異常被觸發(fā)匠襟,就會 拋出一個異常钝侠。Catch代碼塊捕獲異常该园,并創(chuàng)建一個包含異常信息的對象。$e->getMessage()机错,輸出異常的錯誤信息爬范。
? ? ????????解決異常:使用set_error_handler函數(shù)獲取異常(也可以使用try()和catch()函數(shù)),然后使用set_exception_handler()函數(shù)設置默認的異常處理程序,register_shutdown_function()函數(shù)來執(zhí)行,執(zhí)行機制是,php要把調入的函數(shù)調入到內存,當頁面所有的php語句都執(zhí)行完成時,再調用此函數(shù)
17.說說前端?
????????答:我在工作中處理前端的功能,一般就是用ajax向后臺請求數(shù)據(jù)弱匪,然后返回數(shù)據(jù)在前臺頁面中顯示出來。我從來沒有獨立的完整的將html和css樣式都一個人完成璧亮,如果公司實在有這樣的需求的話萧诫,我可能會找一些前臺的模板或者說是前端的框架,比如說h—ui等等
18.權限管理(RBAC)的實現(xiàn)枝嘶?
???????答: 1.首先創(chuàng)建一張用戶表:id name auto(保存格式為:控制器-方法)
? ? ????????2.然后在后臺中創(chuàng)建一個基類控制器,控制器里封裝一個構造方法,當用戶登陸成功后,使用TP框架中封裝好的session函數(shù)獲取保存在服務器中的session id,然后實例化模型,通過用戶id獲取保存在數(shù)據(jù)表中的auth數(shù)據(jù),使用explode函數(shù)分割獲取到的數(shù)據(jù),并使用一個數(shù)組保存起來,然后使用TP框架中封裝好的常量獲取當前控制器和方法,然后把他們組裝成字符串,使用in_array函數(shù)進行判斷該數(shù)組中是否含有當前獲取到的控制器和方法,如果沒有,就提示該用戶沒有權限,如果有就進行下一步操作.
19.支付功能的實現(xiàn)帘饶?
????????答:
20.怎么保證促銷商品不會超賣?
????????答:這個問題是我們當時開發(fā)時遇到的一個難點,超賣的原因主要是下的訂單的數(shù)目和我們要促銷的商品的數(shù)目不一致導致的群扶,每次總是訂單的數(shù)比我們的促銷商品的數(shù)目要多及刻,當時我們的小組討論了好久,給出了好幾個方案來實現(xiàn):
????第一種方案:①在每次下訂單前我們判斷促銷商品的數(shù)量夠不夠竞阐,不夠不允許下訂單缴饭,更改庫存量時加上一個條件,只更改商品庫存大于0的商品的庫存骆莹,當時我們使用ab進行壓力測試颗搂,當并發(fā)超過500,訪問量超過2000時幕垦,還是會出現(xiàn)超賣現(xiàn)象丢氢。所以被我們否定了。
????第二種方案:②使用mysql的事務加排他鎖來解決先改,首先我們選擇數(shù)據(jù)庫的存儲引擎為innoDB疚察,使用的是排他鎖實現(xiàn)的,剛開始的時候我們測試了下共享鎖仇奶,發(fā)現(xiàn)還是會出現(xiàn)超賣的現(xiàn)象貌嫡。有個問題是,當我們進行高并發(fā)測試時猜嘱,對數(shù)據(jù)庫的性能影響很大衅枫,導致數(shù)據(jù)庫的壓力很大,最終也被我們否定了朗伶。
????第三種方案:③使用文件鎖實現(xiàn)弦撩。當用戶搶到一件促銷商品后先觸發(fā)文件鎖,防止其他用戶進入论皆,該用戶搶到促銷品后再解開文件鎖益楼,放其他用戶進行操作猾漫。這樣可以解決超賣的問題,但是會導致文件得I/O開銷很大感凤。
最后我們使用了redis的隊列來實現(xiàn)悯周。將要促銷的商品數(shù)量以隊列的方式存入redis中,每當用戶搶到一件促銷商品則從隊列中刪除一個數(shù)據(jù)陪竿,確保商品不會超賣禽翼。這個操作起來很方便,而且效率極高族跛,最終我們采取這種方式來實現(xiàn)
21.商城秒殺的實現(xiàn)?
????????答:搶購闰挡、秒殺是如今很常見的一個應用場景,主要需要解決的問題有兩個:
? ? ????????1.高并發(fā)對數(shù)據(jù)庫產(chǎn)生的壓力
? ??????????2 競爭狀態(tài)下如何解決庫存的正確減少(”超賣”問題)
? ??????對于第一個問題礁哄,已經(jīng)很容易想到用緩存來處理搶購长酗,避免直接操作數(shù)據(jù)庫,例如使用Redis桐绒。第二個問題夺脾,我們可以使用redis隊列來完成,把要秒殺的商品放入到隊列中茉继,因為pop操作是原子的咧叭,即使有很多用戶同時到達,也是依次執(zhí)行馒疹,文件鎖和事務在高并發(fā)下性能下降很快佳簸,當然還要考慮其他方面的東西,比如搶購頁面做成靜態(tài)的颖变,通過ajax調用接口生均,其中也可能會出現(xiàn)一個用戶搶多次的情況,這時候需要再加上一個排隊隊列和搶購結果隊列及庫存隊列腥刹。高并發(fā)情況下马胧,將用戶進入排隊隊列,用一個線程循環(huán)處理從排隊隊列取出一個用戶衔峰,判斷用戶是否已在搶購結果隊列佩脊,如果在,則已搶購垫卤,否則未搶購威彰,庫存減1,寫數(shù)據(jù)庫穴肘,將用戶入結果隊列歇盼。
22.購物車的實現(xiàn)原理?
????????答:購物車相當于現(xiàn)實中超市的購物車,不同的是一個是實體車评抚,一個是虛擬車而已豹缀。用戶可以在購物網(wǎng)站的不同頁面之間跳轉伯复,以選購自己喜愛的商品,點擊購買時邢笙,該商品就自動保存到你的購物車中啸如,重復選購后,最后將選中的所有商品放在購物車中統(tǒng)一到付款臺結賬氮惯,這也是盡量讓客戶體驗到現(xiàn)實生活中購物的感覺叮雳。服務器通過追蹤每個用戶的行動,以保證在結賬時每件商品都物有其主妇汗。
主要涉及以下幾點:
? ? 1债鸡、把商品添加到購物車,即訂購
? ? 2铛纬、刪除購物車中已定購的商品
? ? 3、修改購物車中某一本圖書的訂購數(shù)量
? ? 4唬滑、清空購物車
? ? 5告唆、顯示購物車中商品清單及數(shù)量、價格
實現(xiàn)購物車的關鍵在于服務器識別每一個用戶并維持與他們的聯(lián)系晶密。但是HTTP協(xié)議是一種“無狀態(tài)(Stateless)”的協(xié)議擒悬,因而服務器不能記住是誰在購買商品,當把商品加入購物車時稻艰,服務器也不知道購物車里原先有些什么懂牧,使得用戶在不同頁面間跳轉時購物車無法“隨身攜帶”,這都給購物車的實現(xiàn)造成了一定的困難尊勿。
目前購物車的實現(xiàn)主要是通過cookie僧凤、session或結合數(shù)據(jù)庫的方式。下面分析一下它們的機制及作用元扔。
23.redis隊列消息先進先出需要注意什么?
????????答:通常使用一個list來實現(xiàn)隊列操作躯保,這樣有一個小限制,所以的任務統(tǒng)一都是先進先出澎语,如果想優(yōu)先處理某個任務就不太好處理了途事,這就需要讓隊列有優(yōu)先級的概念,我們就可以優(yōu)先處理高級別的任務擅羞,實現(xiàn)方式有以下幾種方式:
1)單一列表實現(xiàn):隊列正常的操作是 左進右出(lpush,rpop)為了先處理高優(yōu)先級任務尸变,在遇到高級別任務時,可以直接插隊减俏,直接放入隊列頭部(rpush)召烂,這樣,從隊列頭部(右側)獲取任務時垄懂,取到的就是高優(yōu)先級的任務(rpop)
2)使用兩個隊列骑晶,一個普通隊列痛垛,一個高級隊列,針對任務的級別放入不同的隊列桶蛔,獲取任務時也很簡單匙头,redis的BRPOP命令可以按順序從多個隊列中取值,BRPOP會按照給出的 key 順序查看仔雷,并在找到的第一個非空 list 的尾部彈出一個元素蹂析,redis> BRPOP list1 list2 0
list1 做為高優(yōu)先級任務隊列
list2 做為普通任務隊列
這樣就實現(xiàn)了先處理高優(yōu)先級任務,當沒有高優(yōu)先級任務時碟婆,就去獲取普通任務
方式1最簡單电抚,但實際應用比較局限,方式3可以實現(xiàn)復雜優(yōu)先級竖共,但實現(xiàn)比較復雜蝙叛,不利于維護
方式2是推薦用法,實際應用最為合適
24.你遇到過哪些難題,如何解決的?
????????答:在我負責的B2B電商項目中公给,當時我負責的是訂單模塊借帘,由于客戶一次選擇了多家商戶的商品,最終生成了一個訂單淌铐,這樣我們平臺在給商戶結算時出現(xiàn)了不知道這比費用應該給哪個商戶肺然,這時候我們小組經(jīng)過討論,需要涉及到訂單拆分腿准,也就是說用戶點擊支付后,如果有多件商品,并且不是同一家店鋪那么 就要用到訂單的拆分,比如如果有兩件商品,并且不是同一店鋪 就在原來的訂單號下 在生成兩個子訂單號 并修改訂單表中兩件商品的訂單號际起。最終實現(xiàn)了商品的分配管理,解決了我們的難題吐葱。
我覺得在開發(fā)過程中街望,遇到的難題無非是兩個,一個是技術層次的唇撬,我認為它匕,只要你有恒心,有熱心窖认,沒有覺得不了的難題豫柬。另一個就是溝通問題,在任何地方任何時候溝通都是最重要的扑浸,尤其是我們做開發(fā)的烧给,不溝通好,會影響整個項目的進度喝噪,我本人是個非常還溝通的人础嫡,所以這點上也沒多大問題。
25。用戶下單是怎么處理的?
????????答:判斷用戶有沒有登錄榴鼎,在沒有登錄的情況下伯诬,不允許下單。登陸后巫财,可進行下單,并生成唯一的訂單號盗似,此時訂單的狀態(tài)為未支付。
26.電商的登錄是怎么實現(xiàn)的?
????????答:分為普通登錄和第三方登錄 這邊主要說一下第三方登錄吧平项,第三方登陸主要使用的是author協(xié)議赫舒,我就以QQ的第三方登陸為例來進行說明:當用戶在我們的站點請求QQ的第三方登陸時,我們站點會引導用戶跳轉到QQ的登陸授權界面闽瓢, 當用戶輸入QQ和密碼成功登錄以后會自動跳回到我們站點設置好的回調頁面接癌,并附帶一個code參數(shù),接著你使用code再次去請求QQ的授權頁面扣讼,就可以從中獲取到一個access token(訪問令牌)缺猛,通過這個access_token,我們可以調用QQ提供給我們的接口椭符,比如獲取open_id枯夜,可以獲取用戶的基本信息。獲取到之后艰山,我們需要拿用戶的授權信息和open_id和我們平臺的普通用戶進行綁定。這樣不管是普通用戶登陸還是第三方登陸用戶咏闪,都可以實現(xiàn)登陸曙搬。
27.接口安全方面是怎么處理的?
????????答:我們當時是這么做的,使用HTTP的POST方式,對固定參數(shù)+附加參數(shù)進行數(shù)字簽名,使用的是md5加密,比如:我想通過標題獲取一個信息,在客戶端使用 信息標題+日期+雙方約定好的一個key通過md5加密生成一個簽名(sign),然后作為參數(shù)傳遞到服務器端,服務器端使用同樣的方法進行校驗,如何接受過來的sign和我們通過算法算的值相同鸽嫂,證明是一個正常的接口請求纵装,我們才會返回相應的接口數(shù)據(jù)。
28.用的什么技術實現(xiàn)短信發(fā)送据某,哪在調用?
????????答:我主要用的第三方短信接口橡娄,在申請接口時進行相應信息的配置,然后在我們站點需要用到短信驗證的地方進行調用癣籽,我們通常在用戶注冊時使用到挽唉。
29.在工作中遇到什么困難?
???????答:總體來說:在工作我主要遇到這幾個問題比較難處理:
①我之前工作的時候發(fā)現(xiàn)經(jīng)常會出現(xiàn)一些臨時需求打亂了我的計劃,搞得有時候這個任務還沒完成筷狼,又得去做其他的任務瓶籽,最后一天下來,大大小小的東西是很多埂材,但是沒有完成得非常好的塑顺,后面我總結了一下,我會把這些都添加優(yōu)先級俏险,遇到臨時需求严拒,按照優(yōu)先級重新將已有任務和臨時任務進行排版扬绪,保證在規(guī)定時間內有效率的完成優(yōu)先級高的任務。
②在做項目需求時候裤唠,遇到理解能力欠佳的人挤牛,溝通時容易被氣到,影響自己的情緒巧骚,最后反倒還不能到達需要的效果赊颠。后面,每次到這種時候劈彪,我一般會借助一些紙質的竣蹦、更加形象的東西,讓雙方都認同的沧奴、都能明白的一種方式來進行溝通痘括,后面減少了很多不必須的麻煩。大家都知道滔吠,對于程序員來說纲菌,改需求是一件很痛苦的事情,所以前期的溝通工作很重要疮绷。
③還有一件事時翰舌,我以前的領導不太懂技術,所以每次出一個新的需求出來冬骚,總是要求我們在很短的時間內完成椅贱,完不成我們就會被懷疑能力有問題。當然只冻,每個領導都希望自己的員工能夠盡快的完成任務庇麦,降低成本,提高效率喜德。這時候我會把我們的需求細化山橄,把其中的重點、難點都列出來舍悯,做好時間規(guī)劃航棱,耐心的跟領導溝通,項目每個點的重要性和時間的花費比例萌衬,確保在這個規(guī)劃的時間點內保質保量的完成任務丧诺。慢慢的也得到了領導的認可,其實領導也不是一味的不通情理奄薇,只要把東西計劃好了驳阎,以最小的代價換取最高的價值,每個人都是很容易理解得
30.用戶不登錄,把商品加入購物車是怎么實現(xiàn)的?
????????答:用戶在不登錄的情況下呵晚,可以把要購買商品的信息(如商品的ID蜘腌,商品的價格、商品的sku_id,購買數(shù)量等關鍵數(shù)據(jù))存到COOKIE里面饵隙,當?shù)顷懙那闆r下撮珠。把COOKIE里面的內容存到數(shù)據(jù)庫,并清除cookie中的數(shù)據(jù)金矛。
31.寫過接口嗎芯急,怎么定義接口的?
????????答:寫過。接口分為兩種:一種是數(shù)據(jù)型接口驶俊,一種是應用型接口娶耍。
數(shù)據(jù)型接口:是比抽象類更抽象的某種“結構”——它其實不是類,但是跟類一樣的某種語法結構饼酿,是一種結構規(guī)范榕酒,規(guī)范我們類要以什么格式進行定義,一般用于團隊比較大故俐,分支比較多的情況下使用想鹰。
應用型接口: API(application interface) 數(shù)據(jù)對外訪問的一個入口
我主要是參與的APP開發(fā)中接口的編寫,客戶端需要什么樣的數(shù)據(jù)药版,我們就給他們提供相應的數(shù)據(jù)辑舷,數(shù)據(jù)以json/xml的格式返回,并且配以相應的接口文檔槽片。
32.sku減庫存的實現(xiàn)?
????????答:SKU = Stock Keeping Unit (庫存量單位)?
即庫存進出計量的單位惩妇,可以是以件,盒筐乳,托盤等為單位。SKU是庫存量單位乔妈,區(qū)分單品蝙云。?
在服裝、鞋類商品中使用最多最普遍路召。 例如紡織品中一個SKU通常表示:規(guī)格勃刨、顏色、款式股淡。
在設計表時身隐,不僅僅只有商品表,商品表中有個總庫存唯灵,我們還需要涉及一張SKU表贾铝,里面有SKU庫存和單價字段,用戶每購買一件商品,實際上購買的都是SKU商品垢揩,這樣在下訂單成功后玖绿,應該根據(jù)所購買的商品的唯一的SKU號來進行相應的SKU庫存的減少,當然商品的總庫存保存在商品主表中叁巨,也需要減少總庫存中的庫存量斑匪。
33.庫存怎么設置?
????????答:庫存分為商品總庫存和SKU庫存,往往商品總庫存的為SKU庫存的總和锋勺。一般在商城的后臺對貨品設置最高庫存及最低庫存后蚀瘸,當前庫存數(shù)量與最高、最低兩者比較庶橱,超出庫存或者低于庫存的贮勃,則被統(tǒng)計成報表形式反映,便于用戶掌握貨品庫存超悬包、短缺狀態(tài)及數(shù)量衙猪。
34.訂單,庫存兩個表如何保證數(shù)據(jù)的一致性布近??
?????????答:在一個電子商務系統(tǒng)中垫释,正常的應該是訂單生成成功后,相應的庫存進行減少必須要保證兩者的一致性撑瞧,但有時候因為某些原因棵譬,比如程序邏輯問題,并發(fā)等問題预伺,導致下單成功而庫存沒有減少的情況订咸。這種情況我們是不允許發(fā)生的,MySQL的中的事務剛好可以解決這一問題酬诀,首先得選擇數(shù)據(jù)庫的存儲引擎為InnoDB的脏嚷,事務規(guī)定了只有下訂單完成了,并且相應的庫存減少了才允許提交事務瞒御,否則就事務回滾父叙,確保數(shù)據(jù)一致性。
35.O2O用戶下單肴裙,c端下單趾唱,如何保證ba端數(shù)據(jù)一致?
???????答:O2O為線上和線下模式蜻懦,O2O模式奉行的是“線上支付+實體店消費”的消費模式甜癞,即消費者在網(wǎng)上下單完成支付后,憑消費憑證到實體店消費宛乃。 O2O模式是把商家信息和支付程序放在線上進行悠咱,而把商品和服務兌現(xiàn)放在線下蒸辆,也就是說O2O模式適用于快遞無法送達的有形產(chǎn)品。數(shù)據(jù)一致性的問題是O2O行業(yè)中最常見的問題乔煞,我們可以類似于數(shù)據(jù)庫的主從復制的思路來解決這個問題.O2O有個供應商系統(tǒng)吁朦,類似于主服務器,在?端(從服務器)下單時渡贾,數(shù)據(jù)同步更新到供應商系統(tǒng)端逗宜,b,a實時從供應商系統(tǒng)中拉取數(shù)據(jù)進行同步空骚,比如利用定時任務纺讲,定時拉取數(shù)據(jù)進行同步。