ongoDB
創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計、成都做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)滄州,10余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792
MongoDB是一個介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bjson格式,因此可以存儲比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。它的特點是高性能、易部署、易使用,存儲數(shù)據(jù)非常方便。
1、可能會問nosql和關(guān)系型數(shù)據(jù)庫的區(qū)別:
優(yōu)點:
1)成本:nosql數(shù)據(jù)庫簡單易部署,基本都是開源軟件,不需要像使用Oracle那樣花費大量成本購買使用,相比關(guān)系型數(shù)據(jù)庫價格便宜
2)查詢速度:nosql數(shù)據(jù)庫將數(shù)據(jù)存儲于緩存之中,關(guān)系型數(shù)據(jù)庫將數(shù)據(jù)存儲在硬盤中,自然查詢速度遠不及nosql數(shù)據(jù)庫
3)存儲數(shù)據(jù)的格式:nosql的存儲格式是key,value形式、文檔形式、圖片形式等等,所以可以存儲基礎(chǔ)類型以及對象或者是集合等各種格式,而數(shù)據(jù)庫則只支持基礎(chǔ)類型
4)擴展性:關(guān)系型數(shù)據(jù)庫有類似join這樣的多表查詢機制的限制導(dǎo)致擴展很艱難
缺點:
1)維護的工具和資料有限,因為nosql是屬于新的技術(shù),不能和關(guān)系型數(shù)據(jù)庫10幾年的技術(shù)同日而語。
2)不提供對sql的支持,如果不支持sql這樣的工業(yè)標(biāo)準(zhǔn),將產(chǎn)生一定用戶的學(xué)習(xí)和使用成本
3)不提供關(guān)系型數(shù)據(jù)庫對事物的處理
2、介紹下redis和mongodb:
自行g(shù)oogle。
3、應(yīng)用場景:
redis:
a.主要是做熱點數(shù)據(jù)緩存。
b.數(shù)據(jù)過期處理。
c.消息隊列等功能。
d.計數(shù),例如投票等。
mongodb:
mongodb的主要目標(biāo)是在鍵/值存儲方式(提供了高性能和高度伸縮性)以及傳統(tǒng)的RDBMS系統(tǒng)(豐富的功能)架起一座橋梁,集兩者的優(yōu)勢于一身。mongo適用于以下場景:
a.網(wǎng)站數(shù)據(jù):mongo非常適合實時的插入,更新與查詢,并具備網(wǎng)站實時數(shù)據(jù)存儲所需的復(fù)制及高度伸縮性。
b.緩存:由于性能很高,mongo也適合作為信息基礎(chǔ)設(shè)施的緩存層。在系統(tǒng)重啟之后,由mongo搭建的持久化緩存可以避免下層的數(shù)據(jù)源過載。
c.大尺寸、低價值的數(shù)據(jù):使用傳統(tǒng)的關(guān)系數(shù)據(jù)庫存儲一些數(shù)據(jù)時可能會比較貴,在此之前,很多程序員往往會選擇傳統(tǒng)的文件進行存儲。
d.高伸縮性的場景:mongo非常適合由數(shù)十或者數(shù)百臺服務(wù)器組成的數(shù)據(jù)庫。
e.用于對象及JSON數(shù)據(jù)的存儲:mongo的BSON數(shù)據(jù)格式非常適合文檔格式化的存儲及查詢。
4、支持的數(shù)據(jù)類型:
內(nèi)容比較多,自行將網(wǎng)上的信息整理一下。
一、專業(yè)技能
熟練的使用Java語言進行面向?qū)ο蟪绦蛟O(shè)計,有良好的編程習(xí)慣,熟悉常用的JavaAPI,包括集合框架、多線程(并發(fā)編程)、I/O(NIO)、Socket、JDBC、XML、反射等。
熟悉基于JSP和Servlet的JavaWeb開發(fā),對Servlet和JSP的工作原理和生命周期有深入了解,熟練的使用JSTL和EL編寫無腳本動態(tài)頁面,有使用監(jiān)聽器、過濾器等Web組件以及MVC架構(gòu)模式進行JavaWeb項目開發(fā)經(jīng)驗。
對Spring的IoC容器和AOP原理有深入了解,熟練的運用Spring框架管理各種Web組件及其依賴關(guān)系,熟練的使用Spring進行事務(wù)、日志、安全性等的管理,有使用SpringMVC作為表示層技術(shù)以及使用Spring提供的持久化支持進行Web項目開發(fā)的經(jīng)驗,熟悉Spring對其他框架的整合。
熟練的使用Hibernate、MyBatis等ORM框架,熟悉Hibernate和MyBatis的核心API,對Hibernate的關(guān)聯(lián)映射、繼承映射、組件映射、緩存機制、事務(wù)管理以及性能調(diào)優(yōu)等有深入的理解。
熟練的使用HTML、CSS和JavaScript進行Web前端開發(fā),熟悉jQuery和Bootstrap,對Ajax技術(shù)在Web項目中的應(yīng)用有深入理解,有使用前端MVC框架(AngularJS)和JavaScript模板引擎(HandleBars)進行項目開發(fā)的經(jīng)驗。
熟悉常用的關(guān)系型數(shù)據(jù)庫產(chǎn)品(MySQL、Oracle),熟練的使用SQL和PL/SQL進行數(shù)據(jù)庫編程。
熟悉面向?qū)ο蟮脑O(shè)計原則,對GoF設(shè)計模式和企業(yè)應(yīng)用架構(gòu)模式有深入的了解和實際開發(fā)的相關(guān)經(jīng)驗,熟練的使用UML進行面向?qū)ο蟮姆治龊驮O(shè)計,有TDD(測試驅(qū)動開發(fā))和DDD(領(lǐng)域驅(qū)動設(shè)計)的經(jīng)驗。
熟悉Apache、NginX、Tomcat、WildFly、Weblogic等Web服務(wù)器和應(yīng)用服務(wù)器的使用,熟悉多種服務(wù)器整合、集群和負載均衡的配置。
熟練的使用產(chǎn)品原型工具Axure,熟練的使用設(shè)計建模工具PowerDesigner和Enterprise Architect,熟練的使用Java開發(fā)環(huán)境Eclipse和IntelliJ,熟練的使用前端開發(fā)環(huán)境WebStorm,熟練的使用軟件版本控制工具SVN和Git,熟練的使用項目構(gòu)建和管理工具Maven和Gradle。
說明: ?上面羅列的這些東西并不是每一項你都要爛熟于心,根據(jù)企業(yè)招聘的具體要求可以做相應(yīng)的有針對性的準(zhǔn)備。但是前6項應(yīng)該是最低要求,是作為一個Java軟件工程師必須要具備的專業(yè)技能。
二、項目經(jīng)驗
項目介紹
本系統(tǒng)是X委托Y開發(fā)的用于Z的系統(tǒng),系統(tǒng)包括A、B、C、D等模塊。系統(tǒng)使用了Java企業(yè)級開發(fā)的開源框架E以及前端技術(shù)F。表示層運用了G架構(gòu),使用H作為視圖I作為控制器并實現(xiàn)了REST風(fēng)格的請求;業(yè)務(wù)邏輯層運用了J模式,并通過K實現(xiàn)事務(wù)、日志和安全性等功能,通過L實現(xiàn)緩存服務(wù);持久層使用了M封裝CRUD操作,底層使用N實現(xiàn)數(shù)據(jù)存取。整個項目采用了P開發(fā)模型。 ?說明: ?E通常指spring(Java企業(yè)級開發(fā)的一站式選擇); ?F最有可能是jQuery庫及其插件或者是Bootstrap框架,當(dāng)然如果要構(gòu)建單頁應(yīng)用(SPA)最佳的方案是前端MVC框架(如AngularJS)和JavaScript模板引擎(如HandleBars);G顯然是MVC(模型-視圖-控制),最有可能的實現(xiàn)框架是spring MVC,除此之外還有Struts 2、JSF以及Apache為JSF提供的MyFaces實現(xiàn); ?H是JSP,JSP作為MVC中的V,也可使用模板引擎(如Freemarker和Velocity)來生成視圖還可以是各種文檔或報表(如Excel和PDF等); ?I是Servlet或者自定義的控制器,他們是MVC中的C,當(dāng)然Spring MVC中提供了作為前端控制器的DispatcherServlet; ?J通常是事務(wù)腳本; ?K應(yīng)該是AOP(面向切面編程)技術(shù); ?L目前廣泛使用的有memcached和Redis; ?M的選擇方案很多,最有可能的是hibernate和MyBatis,也可以兩種技術(shù)同時運用,但通常是將增刪改交給hibernate來處理,而復(fù)雜的查詢則由MyBatis完成,此外TopLink、jOOQ也是優(yōu)秀的持久層解決方案; ?N底層的數(shù)據(jù)存取傳統(tǒng)上是使用關(guān)系型數(shù)據(jù)庫,可以是MySQL、Oracle、SQLServer、DB2等,隨著大數(shù)據(jù)時代的來臨,也可以采用NoSQL(如MongoDB、MemBase、BigTable等)和其他大數(shù)據(jù)存取方案(如GFS、HDFS等); ?P是項目的開發(fā)模型,可以是瀑布模型、快速原型模型、增量模型、螺旋模型、噴泉模型、RAD模型等。
項目開發(fā)流程
1、可行性分析:可行性分析報告、項目開發(fā)計劃書;
2、需求分析:需求規(guī)格說明書OOAD(用例圖、時序圖、活動圖);
界面原型:幫助理解需求、業(yè)務(wù)層設(shè)計時推導(dǎo)事務(wù)腳本;
3、設(shè)計:概要設(shè)計說明書、詳細設(shè)計說明書;
*抽取業(yè)務(wù)實體(領(lǐng)域?qū)ο螅侯悎D、E-R圖(概念設(shè)計階段);
分層架構(gòu):確定各層的技術(shù)實現(xiàn)方案(具體到使用的框架、數(shù)據(jù)庫服務(wù)器、應(yīng)用服務(wù)器等);
*業(yè)務(wù)層設(shè)計:事務(wù)腳本模式(事務(wù):用戶發(fā)送一次請求就是一個事務(wù);
腳本:一個方法或一個函數(shù);
*事務(wù)腳本:把一次請求封裝為一個方法或一個函數(shù);事務(wù)腳本模式:一個事務(wù)開始于腳本的打開,終止于腳本的關(guān)閉);
*業(yè)務(wù)層涉及的對象有三種類型:事務(wù)腳本類(封裝了業(yè)務(wù)的流程)、數(shù)據(jù)訪問對象(DAO,封裝了持久化操作)、數(shù)據(jù)傳輸對象(DTO,封裝了失血/貧血領(lǐng)域?qū)ο螅?,三者之間的關(guān)系是事務(wù)腳本類組合(聚合)數(shù)據(jù)訪問對象,這二者都依賴了數(shù)據(jù)傳輸對象正向工程(UML類圖生成Java代碼)和逆向工程(Java代碼生成UML類圖)數(shù)據(jù)庫物理設(shè)計(ER圖轉(zhuǎn)換成表間關(guān)系圖、建庫和建表、使用工具插入測試數(shù)據(jù));
3、編碼;
4、測試:測試報告、缺陷報告;
*單元測試:對軟件中的最小可測試單元進行檢查和驗證,在Java中是對類中的方法進行測試,可以使用JUnit工具來實施;
*集成測試:集成測試也叫組裝測試或聯(lián)合測試。在單元測試的基礎(chǔ)上,將所有模塊按照設(shè)計要求組裝成為子系統(tǒng)進行測試;
*系統(tǒng)測試:將已經(jīng)確認的軟件、硬件、外設(shè)、網(wǎng)絡(luò)等元素結(jié)合在一起,進行信息系統(tǒng)的各種組裝測試和確認測試,系統(tǒng)測試是針對整個產(chǎn)品系統(tǒng)進行的測試,目的是驗證系統(tǒng)是否滿足了需求規(guī)格的定義,找出與需求規(guī)格不符或與之矛盾的地方,從而提出更加完善的方案;
*驗收測試:在軟件產(chǎn)品完成了單元測試、集成測試和系統(tǒng)測試之后,產(chǎn)品發(fā)布之前所進行的軟件測試活動。它是技術(shù)測試的最后一個階段,也稱為交付測試。驗收測試的目的是確保軟件準(zhǔn)備就緒,并且可以讓最終用戶將其用于執(zhí)行軟件的既定功能和任務(wù);
5、交付和維護:用戶手冊、操作手冊;
三、項目管理
版本控制:CVS/SVN/Git
自動構(gòu)建:Ant/Maven/Ivy/Gradle
持續(xù)集成:Hudson/Jenkins
四、系統(tǒng)架構(gòu)
負載均衡服務(wù)器:F5、A10;
應(yīng)用服務(wù)器: HTTP服務(wù)器:Apache、NginX(HTTP、反向代理、郵件代理服務(wù)器);
Servlet容器:Tomcat、Resin
EJB容器:WildFly(JBoss Application Server)、GlassFish、Weblogic、Websphere;
數(shù)據(jù)庫服務(wù)器:MySQL、Eclipse、Oracle;
五、第三方工具(插件)應(yīng)用
圖表工具:基于jQuery的圖表插件(如jQchart、Flot、Charted等)、Chart.js、Highcharts等。
報表工具:Pentaho Reporting、iReport、DynamicReports等。
文檔處理:POI、iText等。
工作流引擎:jBPM、OpenWFE、Snaker、SWAMP等。
作業(yè)調(diào)度:Quartz、JobServer、Oddjob等。
緩存服務(wù):EhCache、memcached、SwarmCache等。
消息隊列:Open-MQ、ZeroMQ、ActiveMQ等。
安全框架:Shiro、PicketBox等。
搜索引擎:IndexTank、Lucene、ElasticSearch等。
Ajax框架:jQuery、ExtJS、DWR等。
UI插件:EasyUI、MiniUI等。
富文本框:UEditor、CKEditor等。
六、面試提問
項目是為哪個公司開發(fā)的?項目的投入是多少?
有多少人參與了項目開發(fā)?整個團隊中,測試人員、開發(fā)人員、項目經(jīng)理比例是多少?
項目開發(fā)了多長時間?項目總的代碼量有多少?你的代碼量有多少?
項目采用了怎樣的開發(fā)模型或開發(fā)流程?項目的架構(gòu)是怎樣的?項目的技術(shù)選型是怎樣的?
你在項目中擔(dān)了怎樣的職責(zé)?是否經(jīng)常開會或加班?項目完成后有哪些收獲或是經(jīng)驗教訓(xùn)?
項目中最困難的部分是什么?如何解決團隊開發(fā)時遇到的各種沖突?
七、面試時可以反問面試官的問題
我注意到你們使用了X技術(shù),請問你們是如何解決Y問題的?
為什么你們的產(chǎn)品使用了X技術(shù)而不是Y技術(shù)?據(jù)我所知,X技術(shù)雖然有A、B、C等好處,但也存在D和E問題,而Y技術(shù)可以解決D和E問題。
我對您說的X技術(shù)不是太熟悉,但我感覺它是一個不錯的解決方案,您能多講講它的工作原理嗎?
你們團隊是如何進行項目規(guī)劃的?一周會有幾次例會?每周的代碼量大概是多少?
就X問題我能想到的解決方案目前就只有Y了,請問您會怎么解決這個問題?
八、S.A.R.法則
S.A.R法則是指先描述問題的場景,然后解釋你采取的行動,最后陳述結(jié)果。
九、面談原則
聲音適中、口齒清楚、面帶微笑、個人形象精神,講禮貌。
主動跟面試官聊他感興趣的話題,讓面試官滿意。
主動的大膽的跟面試官聊自己熟悉有經(jīng)驗的內(nèi)容:項目、技術(shù)點等,做到揚長避短。
一定要表達自己非常想得到這個崗位,自己很愿意學(xué)習(xí)不懂的技術(shù)。
根據(jù)自己的實際水平提出合理的待遇要求。
十、自我評價
學(xué)習(xí)能力(搞IT行業(yè)的人需要不斷的了解新的技術(shù)、工具和方法)
團隊意識(相比個人英雄主義,IT行業(yè)更倡導(dǎo)團隊合作)
抗壓能力(很多IT企業(yè)的工作強度相對來說還是比較大的)
當(dāng)前文章:java面試nosql,java面試自我介紹
網(wǎng)頁URL:http://sd-ha.com/article42/hooiec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、品牌網(wǎng)站建設(shè)、App開發(fā)、營銷型網(wǎng)站建設(shè)、軟件開發(fā)、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)