P2P項目專題
● 具體的你在P2P項目中都干什么了,你負責哪一塊,每一塊實現(xiàn)的時候用到了哪些技術(shù)?
● 你們項目的并發(fā)量設(shè)計了多少?
● P2P項目上線了嗎?
● 你項目中的事務(wù)是怎么處理的?
● 在秒殺項目中使用消息隊列ActiveMQ進行流量削峰,如果ActiveMQ接收消息失敗了,怎么辦?
消息在接收后會被服務(wù)器刪除,為了避免接收消息失敗而消息又被服務(wù)器刪除,此時我們可以關(guān)閉自動確認機制AUTO_ACKNOWLEDGE,采用手動消息確認機制,由程序進行消息的確認,接收消息發(fā)生異常,則不確認消息,以便于下次可以再次接收。
● 在秒殺項目中使用消息隊列ActiveMQ進行流量削峰,如果ActiveMQ掛掉怎么辦?
第一點,首先消息需要使用持久化消息,服務(wù)掛掉,重啟服務(wù)后消息依然可以消費,不會丟失;
第二點,ActiveMQ采用主從模式搭建集群,比如搭建3臺主從模式的ActiveMQ集群,提高服務(wù)的可用性;
● 在交易中,如何控制超賣問題(賣出去的商品大于數(shù)據(jù)庫實際商品庫存)?
解決超賣問題,一個是借助于鎖機制實現(xiàn),這里面有線程鎖、數(shù)據(jù)庫鎖、分布式鎖等,另一個是借助于某些中間件產(chǎn)品實現(xiàn),比如Redis;
如果我們的服務(wù)只是部署了一臺服務(wù)器,我們通過線程鎖即可控制并發(fā)問題,控制了并發(fā)問題,也就不會產(chǎn)生減庫存的沖突,即不會產(chǎn)生超賣問題,這種實現(xiàn),效率不高,而且只能是單機部署,實際項目不會采用;
如果我們的服務(wù)是集群部署,線程鎖就不行了,此時可以使用數(shù)據(jù)庫鎖或分布式鎖控制并發(fā)問題,從而控制減庫存的沖突,避免超賣問題,數(shù)據(jù)庫鎖可以采用樂觀鎖、悲觀鎖,其中樂觀鎖比悲觀鎖效率稍高,在實際項目中使用多一些,悲觀鎖使用較少,但由于數(shù)據(jù)庫本身的性能和并發(fā)處理能力并不理想,在高并發(fā)項目中,使用數(shù)據(jù)庫鎖也是不合適的;
使用分布式鎖解決超賣問題,在實際項目中有相關(guān)真實的案例,主要采用zookeeper實現(xiàn)分布式鎖,分布式鎖是將我們的線程鎖擴展為多個jvm的鎖,代碼在多個jvm上執(zhí)行時,分布式鎖也能進行鎖定,因為能鎖定就能控制并發(fā),控制了并發(fā)即能控制減庫存的沖突,即可解決超賣問題;
使用一些中間件產(chǎn)品解決超賣問題被經(jīng)常使用,最被常用的是Redis,在實際項目中被大量使用,由于Redis是單線程的,不管有多少個并發(fā)請求,Redis會將請求排隊進行處理,即一個一個地有先后順序地處理,這樣即不會有并發(fā)問題,即不會產(chǎn)生減庫存的沖突,從而解決減庫存的超賣問題;
● 在實際項目中,是否使用過多線程?
在P2P項目中,比如在用戶投資到期后需要給用戶回款,此處我們使用了多線程,加快整個回款的速度,我們先從數(shù)據(jù)庫獲取所有待回款的數(shù)據(jù),然后創(chuàng)建一個線程池,每個回款是一個線程,將這些回款線程提交到線程池中執(zhí)行,從而充分利用服務(wù)器的CPU資源快速為用戶回款;
再比如當每個投資用戶生日時,我們會在用戶生日當天給用戶送一個生日紅包,由于同一天有大量用戶生日,我們也是通過多線程為用戶送紅包,先從數(shù)據(jù)庫獲取當天生日的用戶,然后創(chuàng)建一個線程池,給每個用戶發(fā)紅包是一個線程,將這些發(fā)紅包線程提交到線程池中執(zhí)行,從而加速生日紅包的發(fā)送任務(wù);
● P2P中的投資及收益金額采用Java中的什么數(shù)據(jù)類型進行存儲?
由于涉及到精度問題,我們項目中都采用BigDecimal類型,以避免在計算收益時,導(dǎo)致金額精確的損失。
● 你們這個P2P項目上線后采用的是什么訪問協(xié)議?
為了數(shù)據(jù)傳輸?shù)陌踩裕覀兊膒2p項目訪問的時候,全部都https協(xié)議,https協(xié)議會將數(shù)據(jù)加密傳輸,提高安全性,我們當時公司的運維部門采購了https的安全證書,在服務(wù)器上搭建了https協(xié)議的訪問方式,如果用戶采用http訪問,我們會自動跳轉(zhuǎn)到https協(xié)議打開網(wǎng)頁;
● 你們P2P項目對金錢是怎么處理的?
項目中涉及到的資金問題,有幾處處理,一個是我們有一個后臺對賬系統(tǒng),每天會根據(jù)第三方支付系統(tǒng)的結(jié)算清單,與我們這邊的充值數(shù)據(jù)進行對賬,保證我們與第三方的數(shù)據(jù)一致;
對于用戶投資到期后,提現(xiàn)自己的本金和收益,我們后臺系統(tǒng)有專門的提現(xiàn)審核功能,通過系統(tǒng)審核該投資用戶的資金流是否有異常,無異常方可通過提現(xiàn)審核。
● 你們使用定時任務(wù)是干什么的?
我們使用定時任務(wù)主要是處理一些定時或延遲的工作,這些工作不需要馬上處理,就配置好時間,讓程序在指定的時間或者指定的頻率去執(zhí)行,比如我們在理財產(chǎn)品投資滿標后,會生成收益計劃,投資到期后給用戶返回收益等,我們都是采用定時任務(wù)來完成的,Spring框架集成支持定時任務(wù),我們采用的就是spring框架下的spring-task來實現(xiàn)定時任務(wù);
● 請你描述一下整個P2P的支付流程?
支付模塊,我們當時對接了兩家,一家快錢支付,一家豐付支付,當時是由我開發(fā)的,我們的商務(wù)和對方談好后并簽訂了支付協(xié)議,對方的技術(shù)給我們提供了相關(guān)的支付接口文檔及demo,我主要是根據(jù)對方的接口文檔進行開發(fā),首先是調(diào)用對方提供的支付下單接口,把我這邊準備好的參數(shù)傳給對方,然后調(diào)用對方接口,根據(jù)對方的返回信息進行處理,如果對方返回成功,然后調(diào)用對方的獲取短信驗證碼接口,此時將給用戶的手機號發(fā)送一個支付驗證碼,用戶輸入支付短信驗證碼后,點擊確定支付,然后我們提交支付請求,對方將返回支付的結(jié)果,支付結(jié)果對方會通過兩種方式返回,一個是同步返回,一個是異步返回,我們接收對方的這兩個返回結(jié)果,更新我們的數(shù)據(jù)庫狀態(tài),完成整個支付流程;
● 請介紹一下這個P2P項目的整體架構(gòu)及你做了什么?
整個P2P項目第一個版本,我們是采用普通的ssm框架進行開發(fā)的,是一種集中式的開發(fā)方式,上線一年之后,隨著公司發(fā)展和業(yè)務(wù)需要,我們原來的ssm架構(gòu)的項目,代碼非常龐大和混亂,一個方法可能出現(xiàn)好幾百行,里面很多邏輯,要新增一個功能,開發(fā)特別慢,由于修改這個功能,可能又導(dǎo)致另一個功能出現(xiàn)問題或者bug,后來我們對整個p2p項目進行了重構(gòu),采用分布式開發(fā)方式,當時選擇了非常流行的Dubbo分布式開發(fā)框架,主要架構(gòu)是spring mvc + spring + dubbo +mybatis的架構(gòu),另外還有一些中間件,dubbo注冊中心zookeeper,緩存Redis、隊列ActiveMQ、文件存儲FastDFS,Session同步Sprign Session等;
在這個項目中,我參與了整個過程的開發(fā),當時公司處于快速發(fā)展中,工作分工并不明確,前后臺基本都會參與開發(fā),我先是開發(fā)了p2p前端網(wǎng)站部分的理財產(chǎn)品展示、用戶投資、用戶充值三大功能模塊,同時開發(fā)這些模塊對應(yīng)的Dubbo服務(wù),其中的支付模塊,是單獨一個項目,主要對接第三方支付接口,快錢和豐付,這個項目全部是我完成的,對此我也比較熟悉。
● 你們這個P2P項目的并發(fā)量大概多少,部署了幾臺tomcat?
我們P2P項目有三端,一個是PC端,一個是H5端,一個的App端,其中H5端的流量比較小,并發(fā)量也很低,PC端和App端并發(fā)量高一些,其中App端并發(fā)量最大,因為App端的用戶最多,App端的后端接口部署了5臺tomcat,最大的并發(fā)是3500左右,這個3500是同時處理請求的能力,而不是一段時間或者多少秒的處理能力,QPS大約是30萬左右,整個平臺大約有200萬左右的用戶;
● 你們P2P項目中分布式事務(wù)怎么解決和處理的?
我們這個P2P項目,后端的服務(wù),沒有再拆分,就是一個dubbo服務(wù),所以一個事務(wù)請求會提交到一個項目單元上執(zhí)行,這樣我們是避免了分布式事務(wù)的問題,因為對于一般的中小型項目,也建議不涉及到分布式事務(wù)的問題,也就是說能避免盡量避免,而在一些大型項目中無法避免需要分布式事務(wù)時,目前常用的解決方案是:
1、兩階段提交;
2、三階段提交;
3、TCC補償;
4、異步確保;
5、最大努力通知;
● 為什么充值會發(fā)生掉單問題?怎么解決的?
充值時候與第三方接口對接的過程中,涉及到多個系統(tǒng),每個系統(tǒng)都無法保證整個充值過程中都是100%的高可用,還有網(wǎng)絡(luò)等原因,就不可避免會出現(xiàn)某個系統(tǒng)成功了,另一個系統(tǒng)沒有成功的問題,當出現(xiàn)這種情況的時候,這筆充值就會出現(xiàn)數(shù)據(jù)狀態(tài)的不一致,也就是掉單,為了解決該問題,我們采用的是一種補償機制,在發(fā)生掉單后,進行自動補償,系統(tǒng)開啟一個定時任務(wù),對出現(xiàn)掉單的訂單進行再次補償,我們會先檢索出掉單的訂單,然后通過第三方支付系統(tǒng)的接口,查詢該訂單的充值狀態(tài),如果第三方已經(jīng)成功了,我們這邊系統(tǒng)就需要更新相關(guān)的數(shù)據(jù);
● 你們的P2P項目使用Redis主要做什么?
在該項目中,最初沒有使用Redis,是邊運營邊迭代升級的,在沒有使用Redis的時候,我們的前端業(yè)務(wù)系統(tǒng)上的所有數(shù)據(jù)都是直接到達數(shù)據(jù)庫獲取,導(dǎo)致我們后端的數(shù)據(jù)庫經(jīng)常出現(xiàn)cpu及io壓力很大,后續(xù)我們將前端業(yè)務(wù)系統(tǒng)上一些不需要實時更新的數(shù)據(jù),一些頻繁查詢的熱點數(shù)據(jù),進行了Redis緩存存儲,來提升系統(tǒng)的能力。
● 生產(chǎn)環(huán)境(線上環(huán)境)中出現(xiàn)的問題,你們是怎么解決的?
生產(chǎn)中的問題,發(fā)現(xiàn)后由該系統(tǒng)的技術(shù)負責人全力協(xié)調(diào)解決,如果是緊急影響較大的bug,會暫時下線該功能,快速對該問題進行修復(fù),然后由測試團隊進行嚴格測試,再上線,再次上線前將之前由于bug產(chǎn)生的數(shù)據(jù)問題進行修復(fù)。處理線上問題的步驟是先判斷問題的嚴重程序、波及范圍等,優(yōu)先快速恢復(fù)服務(wù),讓用戶可以繼續(xù)使用,然后再解決bug,排查bug主要是根據(jù)線上日志、數(shù)據(jù)庫數(shù)據(jù)等;
● 你們P2P項目的利息是怎么計算的?
利息的計算,公司的產(chǎn)品經(jīng)理提供了計算公式,我們技術(shù)人員根據(jù)計算公式進行計算,由于涉及到精度問題,所有計算都是采用BigDecimal類型進行加減乘除;
● 用戶在你的P2P充值,如何防止你的請求被黑客攔截,給你返回一個假的充值成功結(jié)果?實際用戶未支付,但你系統(tǒng)給用戶充了值?
這個問題,我們有簽名驗簽機制就保證了,我們的請求中都有一個簽名串,簽名串黑客無法偽造,如果簽名串驗證無法通過,我們將不會給用戶充值,提示簽名失敗;
● 如何防止用戶重復(fù)點擊、重復(fù)提交充值?
用戶點擊后我們會將用戶的提交在redis中存放一個標志,如果用戶重復(fù)提交,我們會檢查redis的標志,來拒絕用戶的第二次提交,值處理第一次提交請求;
● 用戶的錢的整個流轉(zhuǎn)過程是怎么樣的?
用戶通過第三方充值渠道,將用戶銀行卡的資金劃入到P2P平臺在第三方支付公司開通的賬戶中,然后我們會把用戶的充值金額記錄在我們的數(shù)據(jù)庫用戶資金記錄表中,當用戶投資某個產(chǎn)品,比如100元,我們會將用戶資金記錄表中的資金凍結(jié)掉投資金額100元,當投資到期后,會產(chǎn)生收益,比如收益是1元,那么我們就會將之前凍結(jié)的100元,再加上收益1元返回到用戶的資金記錄表中,最后用戶提現(xiàn)101元,我們的后臺結(jié)算系統(tǒng)審核用戶的提現(xiàn)金額,審核通過后,通過第三方支付公司,從我們P2P平臺在第三支付公司開通的賬戶中扣除101元,將101元打入用戶提交的銀行賬號中;
● 請介紹一下你做的這個P2P項目?
該項目是一個基于互聯(lián)網(wǎng)金融的網(wǎng)貸平臺,有理財端和借款端,我主要是參與做的理財端,該項目主要包括PC站、M站、APP客戶端(Android、iOS),由多個項目系統(tǒng)構(gòu)成,包括前端業(yè)務(wù)系統(tǒng)PC端和H5端、數(shù)據(jù)接口系統(tǒng)、核心系統(tǒng)、結(jié)算系統(tǒng)、支付系統(tǒng)、定時任務(wù)系統(tǒng)、營銷活動系統(tǒng),紅包系統(tǒng),合同簽章系統(tǒng)、實名認證接口系統(tǒng)、輪播圖系統(tǒng)等。
整個項目采用分布式開發(fā)模式,Tomcat集群部署,采用Nginx實現(xiàn)負載均衡和動靜分離,MySQL主從復(fù)制模式,Redis集群模式,ActiveMQ的異步處理、Zookeeper做為注冊中心,Spring session共享,Redis集群緩存熱點數(shù)據(jù)提升系統(tǒng)吞吐量,整個項目采用的技術(shù)架構(gòu)主要是:Spring mvc + Spring + Dubbo +MyBatis, 采用Dubbo實現(xiàn)項目間的RPC調(diào)用,采用分布式文件系統(tǒng)FastDFS存儲投資借款合同。
我在這個平臺中參與過前端業(yè)務(wù)系統(tǒng),Dubbo數(shù)據(jù)接口系統(tǒng),支付接口系統(tǒng)、合同簽章系統(tǒng)的開發(fā),對這幾個系統(tǒng)比較熟悉,通過這個項目,遇到過一些問題,也學(xué)到很多東西。比如最早的時候,對Dubbo開發(fā)框架不是很了解,通過該項目,現(xiàn)在比較得心應(yīng)手。
互聯(lián)網(wǎng)分布式專題
● 你都知道哪些技術(shù)可以完成異構(gòu)系統(tǒng)整合?
httpclient、webservices
● 自我介紹?
面試官您好,我叫XX,非常高興認識您。到目前為止我從事Java軟件編碼工作已經(jīng)3年了,之前一直在石家莊的XX公司工作,他是一家外包公司,在這期間我接觸了有六七個項目,其中包括政府部門的項目、銀行相關(guān)的項目、還有互聯(lián)網(wǎng)公司相關(guān)的項目,最近做的是一個P2P互聯(lián)網(wǎng)金融項目。北京這邊畢竟軟件環(huán)境好一些,有一些朋友也來到北京發(fā)展情況挺好的,所以前兩天把石家莊的工作辭掉了,想在北京闖一闖。這就是我的個人情況,謝謝。
說明:這只是一個參考的模板,自行修改,并且在進行自我介紹的時候不要死記硬背。要用描述性的語言說出來。
● 說一個我們留下你的理由?
首先,我個人非常喜歡熱愛Java軟件開發(fā)這份工作,我喜歡耐心的做一件事,實現(xiàn)一個一個客戶的需求。
其次,我的技術(shù)能力完全可以勝任咱們這份工作,技術(shù)這塊您放心,肯定不掉鏈子,按時按點完成領(lǐng)導(dǎo)交辦的任務(wù)。
另外,我也喜歡咱們公司的企業(yè)文化以及工作氛圍。希望貴公司能給一次機會。
● 你還有什么要問的嗎?
基本上也沒什么問題了,我就是想知道一下咱們團隊開發(fā)使用的是哪些技術(shù),如果可以的話,我回去抓緊時間熟悉一下。比如用的哪些框架,后臺使用的什么技術(shù),前端使用的什么框架等。
● 你的期望薪資是多少?
多種回答方式:第一種是直接說一個薪資值,例如:10K左右是可以接受的(帶個左右,不要說區(qū)間值,千萬別說10~15)。第二種方式可以這樣說:我來之前也對北京這塊的薪資結(jié)構(gòu)有了一定的了解,3年工作經(jīng)驗在北京這塊大概在12K以上,所以12K左右都可以接受,當然,薪資這塊不是硬性要求,能夠遇到一個好的團隊,優(yōu)秀的企業(yè)這是最主要的。
● 說一下職業(yè)規(guī)劃?
其實具體的職業(yè)規(guī)劃目前也沒有刻意的去制定過,目前來說我還是希望能夠把技術(shù)底層再好好的研究一下,比如像數(shù)據(jù)結(jié)構(gòu)、算法、框架底層源代碼等。我還是比較喜歡鉆研技術(shù)。
● 你平時除了開發(fā)還干什么?
平時除了編碼之外,主要還是為公司產(chǎn)品解決一些線上的問題,調(diào)一些bug。另外還會寫日報周報、參與各種會議、和產(chǎn)品溝通、和測試溝通等等,閑暇時間會學(xué)習(xí)一些新的技術(shù)。
● 項目經(jīng)理通過什么方式分配任務(wù)?
這個問題的答案不是固定的,因為每個團隊的管理方式不同。比較正規(guī)的大的公司一般會使用專業(yè)的工具,例如project、Planisware工具,但這些工具使用復(fù)雜。對于一些規(guī)模比較小的公司來說一般excel就搞定了,在excel表格中描述任務(wù)并自動生成甘特圖來跟蹤任務(wù)的進展。(建議這樣回答:我們項目組使用的excel進行任務(wù)分配的,在excel中標上一些特殊的顏色,來表示不同的進度。)
● 項目經(jīng)理怎么監(jiān)控項目進度的?
每一天我們都要按時提交日報,每一周都要按時提交周報,項目經(jīng)理通過日報周報等形式監(jiān)控項目進度。
● 項目經(jīng)理怎么監(jiān)控代碼質(zhì)量的?
不定期的進行代碼走查(代碼review),項目經(jīng)理、組長、程序員一起到會議室,打開投影儀,把最近幾天的代碼一行一行的看一看,主要看看代碼的注釋、代碼的格式、代碼的命名規(guī)范、代碼的冗余度等。
● 怎么和測試溝通的?
● 你平時和誰溝通較多?
通過上圖可以看出,開發(fā)通常和產(chǎn)品、測試溝通較多。
● 你們小組是怎么溝通的?
● 你們平時都什么時候開會,都開什么會?
一般都會有晨會(小組會議)。
每日晨會是敏捷開發(fā)過程中最為重要的一個環(huán)節(jié)。核心團隊成員每天早上開一個非常短的碰頭會,每人平均2到3分鐘,介紹昨天做了什么,今天要做什么,有什么困難沒有。
主要目的是便于項目管理人員了解任務(wù)開發(fā)狀態(tài),發(fā)現(xiàn)潛在的隱患,督促團隊成員勤勉工作,幫助解決困難。
一般采用站立式非正規(guī)會議,集中在一個小會議室或者是在稍微偏僻一點的走廊。
當項目管理人員發(fā)現(xiàn)某個團隊成員工作不力或者是遇到困難的時候,除在會議上作簡短確認以及詢問其它團隊成員能否幫助外,還應(yīng)在會后與當事人進行詳細溝通。
有一些公司會有夕會,下班時候的一個碰頭會(小組會議)。
每周都會有周例會(公司的所有成員會議)。
● 為什么從上家公司離職?
北京這邊的軟件環(huán)境好一些,趁年輕想來大城市闖一闖。
● 你上家公司在哪,哪條路,哪個大廈?
這個題目就需要隨機應(yīng)變了,比如:上家公司在北京大興區(qū),經(jīng)濟技術(shù)開發(fā)區(qū),涼水河二街,大族企業(yè)灣,11號樓A座三層。
● 你上家公司是做哪個行業(yè)的?
這個題目需要大家查一下“之前工作的公司”,了解一下該公司主要做哪一方面的。如果上一家工作的公司是外包公司那是不錯的。因為被外派出去的人員可能會接觸不同行業(yè)的項目。
● 對你上家公司進行一個評價?
我相信面試官您也看到了,自從我大學(xué)畢業(yè)到現(xiàn)在一直在上家公司工作,這也充分證明了我對上家公司的認可。上家公司擁有良好的企業(yè)文化,為我們提供了良好的工作環(huán)境,我們團隊也構(gòu)建了一個良好的工作氛圍,大家工作都很積極努力,團隊成員也都很照顧我,如果還有機會回到石家莊工作的話,我希望能再回到這家公司。
● 說一下你的離職流程?
我離職的前1個月提出了申請,然后我們老大就開始招人,招到后,我就開始和新人進行工作交接,直到新人能夠上手,我就離開了。
● 你們多少人開發(fā)這個項目?
● 說一下你們項目組的組織架構(gòu)/人員分配?
● 你們分組了嗎,都是什么組,你在哪一組?
● 你和領(lǐng)導(dǎo)在一些想法上產(chǎn)生了分歧,你怎么做?
在工作中,和領(lǐng)導(dǎo)打交道是一個技術(shù)活,讓領(lǐng)導(dǎo)開心很重要,但也不能委屈了自己,當和領(lǐng)導(dǎo)產(chǎn)生分歧后,好盡量的去挽救雙方之間的關(guān)系,畢竟自己使下屬,在該讓步的時候還是要學(xué)會讓步。
第一:積極的溝通。也許是領(lǐng)導(dǎo)不了你的實際情況,沒看到你的付出和努力,對你產(chǎn)生了誤解,所以適當?shù)臏贤ň秃苤匾恕?/span>
第二:保持不卑不亢的態(tài)度。在產(chǎn)生分歧的時候,不要一味的退讓或者太過于強勢,凡是都是可以溝通的,讓領(lǐng)導(dǎo)看到自己的工作態(tài)度很重要。
第三:顯示出自己對領(lǐng)導(dǎo)的尊重。也許你的工作能力是比較出眾的,但是一定要給足領(lǐng)導(dǎo)面子,讓領(lǐng)導(dǎo)看出自己的態(tài)度,免得給領(lǐng)導(dǎo)留下了不好的態(tài)度。
第四:選擇求同存異的處理手法。特別是解決工作上的問題,手段是有很多的,你考慮的方向和領(lǐng)導(dǎo)考慮的方向可能會有所出入,可以選擇一種大家都認同的方法來處理。
第五:領(lǐng)導(dǎo)布置的任務(wù)要好好的完成。就算是和領(lǐng)導(dǎo)有分歧,但是領(lǐng)導(dǎo)布置的任務(wù)還是要好好的完成,這樣可以顯示出自己對工作一絲不茍的態(tài)度,也會的到領(lǐng)導(dǎo)的贊賞。
第六:在不改變自己原則的前提下妥協(xié)。先要表明自己的立場,讓自己不做違背自己本心的事情,然后考慮妥協(xié),對方是領(lǐng)導(dǎo),很有可能是你處于被動的地步,所以適當?shù)耐讌f(xié)是有必要的。
● 你們項目組使用的是哪個項目管理軟件?
禪道。
● 你們項目組使用的是哪個版本控制工具?
最近兩年的開發(fā)一直在使用Git,感覺Git比SVN好用。Git是基于分布式的。
● 你之前交過社保嗎?
之前沒有繳納過社保,公司每個月有800元補助。(之前在北京工作過,并且在北京交過社保的同學(xué),可以回答:交過社保。如果社保不是連續(xù)的,可以告訴面試官,社保中間斷了,不想交社保了,公司每個月有800元補助。)
● 程序員苦逼的一天?
其它
● 你們的測試環(huán)境是怎樣的?
我們的測試環(huán)境模擬的就是生產(chǎn)環(huán)境,只不過生產(chǎn)環(huán)境中服務(wù)器硬件要多一些,在測試環(huán)境中一個機器上會安裝多個軟件。
● AJAX跨域你是怎么實現(xiàn)的?
首先我先給您解釋一下我理解的跨域,為什么會有跨域呢?這是因為瀏覽器的同源策略導(dǎo)致的,同源策略是一種約定,它是瀏覽器最核心也最基本的安全功能,如果缺少了同源策略,則瀏覽器的正常功能可能都會受到影響。可以說 Web 是構(gòu)建在同源策略基礎(chǔ)之上的,瀏覽器只是針對同源策略的一種實現(xiàn)。它的核心就在于它認為來自任何站點裝載的信賴內(nèi)容是不安全的。當被瀏覽器半信半疑的腳本運行在沙箱時,它們應(yīng)該只被允許訪問來自同一站點的資源,而不是那些來自其它站點可能懷有惡意的資源。所謂同源是指:域名、協(xié)議、端口相同。所以跨域限制主要的目的就是為了用戶的上網(wǎng)安全。不過在實際的開發(fā)中有很多情況下需要我們實現(xiàn)跨域訪問,因為同一個項目的不同服務(wù)可能部署在不同的服務(wù)器當中,服務(wù)器A調(diào)用服務(wù)器B當中的資源時,就涉及到了跨域問題,那么怎么解決AJAX跨域呢?
第一種方式:JSONP方式解決跨域問題。
jsonp解決跨域問題是一個比較古老的方案(實際中不推薦使用),實際項目中如果要使用JSONP,一般會使用jQuery對JSONP進行了封裝的類庫來進行ajax請求。