【人事】31道宣谈,不準(zhǔn)備就掉坑的問(wèn)題
【面試】面試練習(xí)題大集合(持續(xù)更新中...歡迎問(wèn)題投稿)
更多整理的問(wèn)題點(diǎn)擊公眾號(hào)中間的“簡(jiǎn)歷/面試”菜單即可
面試+簡(jiǎn)歷+溝通+工作流程+談判_匯總
想要成為合格的Java程序員或工程師到底需要具備哪些專業(yè)技能胎撤,面試者在面試之前到底需要準(zhǔn)備哪些東西呢?本文陳列的這些內(nèi)容既可以作為個(gè)人簡(jiǎn)歷中的內(nèi)容掩缓,也可以作為面試的時(shí)候跟面試官聊的東西霹菊,你可以把這些內(nèi)容寫(xiě)到你的簡(jiǎn)歷中冬念,當(dāng)然更需要的是你在面試的時(shí)候向面試官展示這些專業(yè)技能。相信此文對(duì)正在尋覓Java程序員(Java工程師)職位的freshman以及希望成為中高級(jí)Java開(kāi)發(fā)者的junior都會(huì)有所幫助崇渗。
專業(yè)技能
1.?熟練的使用Java語(yǔ)言進(jìn)行面向?qū)ο蟪绦蛟O(shè)計(jì)字逗,有良好的編程習(xí)慣京郑,熟悉常用的Java API,包括集合框架葫掉、多線程(并發(fā)編程)些举、I/O(NIO)、Socket俭厚、JDBC户魏、XML、反射等挪挤。[泛型]
2.????熟悉基于JSP和Servlet的Java Web開(kāi)發(fā)叼丑,對(duì)Servlet和JSP的工作原理和生命周期有深入了解,熟練的使用JSTL和EL編寫(xiě)無(wú)腳本動(dòng)態(tài)頁(yè)面扛门,有使用監(jiān)聽(tīng)器鸠信、過(guò)濾器等Web組件以及MVC架構(gòu)模式進(jìn)行Java Web項(xiàng)目開(kāi)發(fā)的經(jīng)驗(yàn)。
3.????對(duì)Spring的IoC容器和AOP原理有深入了解尖飞,熟練的運(yùn)用Spring框架管理各種Web組件及其依賴關(guān)系症副,熟練的使用Spring進(jìn)行事務(wù)、日志政基、安全性等的管理,有使用Spring MVC作為表示層技術(shù)以及使用Spring提供的持久化支持進(jìn)行Web項(xiàng)目開(kāi)發(fā)的經(jīng)驗(yàn)闹啦,熟悉Spring對(duì)其他框架的整合沮明。
4.????熟練的使用Hibernate、MyBatis等ORM框架窍奋,熟悉Hibernate和MyBatis的核心API荐健,對(duì)Hibernate的關(guān)聯(lián)映射、繼承映射琳袄、組件映射江场、緩存機(jī)制、事務(wù)管理以及性能調(diào)優(yōu)等有深入的理解窖逗。
5.????熟練的使用HTML址否、CSS和JavaScript進(jìn)行Web前端開(kāi)發(fā),熟悉jQuery和Bootstrap碎紊,對(duì)Ajax技術(shù)在Web項(xiàng)目中的應(yīng)用有深入理解佑附,有使用前端MVC框架(AngularJS)和JavaScript模板引擎(HandleBars)進(jìn)行項(xiàng)目開(kāi)發(fā)的經(jīng)驗(yàn)。
6.????熟悉常用的關(guān)系型數(shù)據(jù)庫(kù)產(chǎn)品(MySQL仗考、Oracle)音同,熟練的使用SQL和PL/SQL進(jìn)行數(shù)據(jù)庫(kù)編程。
7.????熟悉面向?qū)ο蟮脑O(shè)計(jì)原則秃嗜,對(duì)GoF設(shè)計(jì)模式和企業(yè)應(yīng)用架構(gòu)模式有深入的了解和實(shí)際開(kāi)發(fā)的相關(guān)經(jīng)驗(yàn)权均,熟練的使用UML進(jìn)行面向?qū)ο蟮姆治龊驮O(shè)計(jì)顿膨,有TDD(測(cè)試驅(qū)動(dòng)開(kāi)發(fā))和DDD(領(lǐng)域驅(qū)動(dòng)設(shè)計(jì))的經(jīng)驗(yàn)。
8.????熟悉Apache叽赊、NginX恋沃、Tomcat、WildFly蛇尚、Weblogic等Web服務(wù)器和應(yīng)用服務(wù)器的使用芽唇,熟悉多種服務(wù)器整合、集群和負(fù)載均衡的配置取劫。
9.????熟練的使用產(chǎn)品原型工具Axure匆笤,熟練的使用設(shè)計(jì)建模工具PowerDesigner和Enterprise Architect,熟練的使用Java開(kāi)發(fā)環(huán)境Eclipse和IntelliJ谱邪,熟練的使用前端開(kāi)發(fā)環(huán)境WebStorm炮捧,熟練的使用軟件版本控制工具SVN和Git,熟練的使用項(xiàng)目構(gòu)建和管理工具Maven和Gradle惦银。
說(shuō)明:上面羅列的這些東西并不是每一項(xiàng)你都要爛熟于心咆课,根據(jù)企業(yè)招聘的具體要求可以做相應(yīng)的有針對(duì)性的準(zhǔn)備。我個(gè)人覺(jué)得前6項(xiàng)應(yīng)該是最低要求扯俱,是作為一個(gè)Java開(kāi)發(fā)者必須要具備的專業(yè)技能书蚪。
項(xiàng)目經(jīng)驗(yàn)
實(shí)際情況為主,適自己能力而定迅栅。
項(xiàng)目介紹
本系統(tǒng)是X委托Y開(kāi)發(fā)的用于Z的系統(tǒng)殊校,系統(tǒng)包括A、B读存、C为流、D等模塊。系統(tǒng)使用了Java企業(yè)級(jí)開(kāi)發(fā)的開(kāi)源框架E以及前端技術(shù)F让簿。表示層運(yùn)用了G架構(gòu)敬察,使用H作為視圖I作為控制器并實(shí)現(xiàn)了REST風(fēng)格的請(qǐng)求;業(yè)務(wù)邏輯層運(yùn)用了J模式尔当,并通過(guò)K實(shí)現(xiàn)事務(wù)莲祸、日志和安全性等功能,通過(guò)L實(shí)現(xiàn)緩存服務(wù)居凶;持久層使用了M封裝CRUD操作虫给,底層使用N實(shí)現(xiàn)數(shù)據(jù)存取。整個(gè)項(xiàng)目采用了P開(kāi)發(fā)模型侠碧。
說(shuō)明:上面的描述中抹估,E通常指Spring(Java企業(yè)級(jí)開(kāi)發(fā)的一站式選擇);F最有可能是jQuery庫(kù)及其插件或者是Bootstrap框架弄兜,當(dāng)然如果要構(gòu)建單頁(yè)應(yīng)用(SPA)最佳的方案是前端MVC框架(如AngularJS)和JavaScript模板引擎(如HandleBars)药蜻;G顯然是MVC(模型-視圖-控制)瓷式,最有可能的實(shí)現(xiàn)框架是Spring MVC,除此之外還有Struts 2语泽、JSF以及Apache為JSF提供的MyFaces實(shí)現(xiàn)贸典,可以使用JSP作為MVC中的V,也可使用模板引擎(如Freemarker和Velocity)來(lái)生成視圖踱卵,還可以是各種文檔或報(bào)表(如Excel和PDF等)廊驼,而Servlet和自定義的控制器是MVC中的C,當(dāng)然Spring MVC中提供了作為前端控制器的DispatcherServlet惋砂;J通常是事務(wù)腳本妒挎,K應(yīng)該是AOP(面向切面編程)技術(shù),L目前廣泛使用的有memcached和Redis西饵;M的選擇方案很多酝掩,最有可能的是Hibernate和MyBatis,也可以兩種技術(shù)同時(shí)運(yùn)用眷柔,但通常是將增刪改交給Hibernate來(lái)處理期虾,而復(fù)雜的查詢則由MyBatis完成,此外TopLink驯嘱、jOOQ也是優(yōu)秀的持久層解決方案镶苞;底層的數(shù)據(jù)存取傳統(tǒng)上是使用關(guān)系型數(shù)據(jù)庫(kù),可以是MySQL鞠评、Oracle宾尚、SQLServer、DB2等谢澈,隨著大數(shù)據(jù)時(shí)代的來(lái)臨,也可以采用NoSQL(如MongoDB御板、MemBase锥忿、BigTable等)和其他大數(shù)據(jù)存取方案(如GFS、HDFS等)怠肋;項(xiàng)目的開(kāi)發(fā)模型P可以是瀑布模型敬鬓、快速原型模型、增量模型笙各、螺旋模型钉答、噴泉模型、RAD模型等杈抢。
項(xiàng)目開(kāi)發(fā)流程
1.????可行性分析?>>>?可行性分析報(bào)告?/?項(xiàng)目開(kāi)發(fā)計(jì)劃書(shū)
2.????需求分析?>>>?需求規(guī)格說(shuō)明書(shū)
o??OOAD(用例圖数尿、時(shí)序圖、活動(dòng)圖)
o??界面原型:幫助理解需求惶楼、業(yè)務(wù)層設(shè)計(jì)時(shí)推導(dǎo)事務(wù)腳本
3.????設(shè)計(jì)?>>>?概要設(shè)計(jì)說(shuō)明書(shū)/詳細(xì)設(shè)計(jì)說(shuō)明書(shū)
o??抽取業(yè)務(wù)實(shí)體(領(lǐng)域?qū)ο螅侯悎D右蹦、E-R圖(概念設(shè)計(jì)階段)
o??分層架構(gòu):確定各層的技術(shù)實(shí)現(xiàn)方案(具體到使用的框架诊杆、數(shù)據(jù)庫(kù)服務(wù)器、應(yīng)用服務(wù)器等)何陆。
o??業(yè)務(wù)層設(shè)計(jì):事務(wù)腳本模式(事務(wù):用戶發(fā)送一次請(qǐng)求就是一個(gè)事務(wù)晨汹;腳本:一個(gè)方法或一個(gè)函數(shù);事務(wù)腳本:把一次請(qǐng)求封裝為一個(gè)方法或一個(gè)函數(shù)贷盲;事務(wù)腳本模式:一個(gè)事務(wù)開(kāi)始于腳本的打開(kāi)淘这,終止于腳本的關(guān)閉)。
o??業(yè)務(wù)層涉及的對(duì)象有三種類型:事務(wù)腳本類(封裝了業(yè)務(wù)的流程)巩剖、數(shù)據(jù)訪問(wèn)對(duì)象(DAO铝穷,封裝了持久化操作)、數(shù)據(jù)傳輸對(duì)象(DTO球及,封裝了失血/貧血領(lǐng)域?qū)ο螅┭踔瑁咧g的關(guān)系是事務(wù)腳本類組合(聚合)數(shù)據(jù)訪問(wèn)對(duì)象,這二者都依賴了數(shù)據(jù)傳輸對(duì)象
o??正向工程(UML類圖生成Java代碼)和逆向工程(Java代碼生成UML類圖)
o??數(shù)據(jù)庫(kù)物理設(shè)計(jì)(ER圖轉(zhuǎn)換成表間關(guān)系圖吃引、建庫(kù)和建表筹陵、使用工具插入測(cè)試數(shù)據(jù))
4.????編碼
5.????測(cè)試?>>>?測(cè)試報(bào)告?/?缺陷報(bào)告
o??單元測(cè)試:對(duì)軟件中的最小可測(cè)試單元進(jìn)行檢查和驗(yàn)證,在Java中是對(duì)類中的方法進(jìn)行測(cè)試镊尺,可以使用JUnit工具來(lái)實(shí)施朦佩。
o??集成測(cè)試:集成測(cè)試也叫組裝測(cè)試或聯(lián)合測(cè)試。在單元測(cè)試的基礎(chǔ)上庐氮,將所有模塊按照設(shè)計(jì)要求組裝成為子系統(tǒng)進(jìn)行測(cè)試语稠。
o??系統(tǒng)測(cè)試:將已經(jīng)確認(rèn)的軟件、硬件弄砍、外設(shè)仙畦、網(wǎng)絡(luò)等元素結(jié)合在一起,進(jìn)行信息系統(tǒng)的各種組裝測(cè)試和確認(rèn)測(cè)試音婶,系統(tǒng)測(cè)試是針對(duì)整個(gè)產(chǎn)品系統(tǒng)進(jìn)行的測(cè)試慨畸,目的是驗(yàn)證系統(tǒng)是否滿足了需求規(guī)格的定義,找出與需求規(guī)格不符或與之矛盾的地方衣式,從而提出更加完善的方案寸士。
o??驗(yàn)收測(cè)試:在軟件產(chǎn)品完成了單元測(cè)試、集成測(cè)試和系統(tǒng)測(cè)試之后碴卧,產(chǎn)品發(fā)布之前所進(jìn)行的軟件測(cè)試活動(dòng)弱卡。它是技術(shù)測(cè)試的最后一個(gè)階段,也稱為交付測(cè)試住册。驗(yàn)收測(cè)試的目的是確保軟件準(zhǔn)備就緒婶博,并且可以讓最終用戶將其用于執(zhí)行軟件的既定功能和任務(wù)。
6.????交付和維護(hù)?>>>?用戶手冊(cè)?/?操作手冊(cè)
項(xiàng)目管理
·???????版本控制:CVS/SVN/Git
·???????自動(dòng)構(gòu)建:Ant/Maven/Ivy/Gradle
·???????持續(xù)集成:Hudson/Jenkins
系統(tǒng)架構(gòu)
·???????負(fù)載均衡服務(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ù)庫(kù)服務(wù)器:MySQL蒋歌、Oracle
第三方工具(插件)應(yīng)用
·???????圖表工具:基于jQuery的圖表插件(如jQchart、Flot委煤、Charted等)堂油、Chart.js、Highcharts等碧绞。[fusioncharts]
·???????報(bào)表工具:Pentaho Reporting府框、iReport、DynamicReports等讥邻。
·???????文檔處理:POI迫靖、iText等。
·???????工作流引擎:jBPM兴使、OpenWFE系宜、Snaker、SWAMP等发魄。
·???????作業(yè)調(diào)度:Quartz盹牧、JobServer、Oddjob等励幼。
·???????緩存服務(wù):EhCache汰寓、memcached、SwarmCache等苹粟。
·???????消息隊(duì)列:Open-MQ踩寇、ZeroMQ等。
·???????安全框架:Shiro六水、PicketBox等。
·???????搜索引擎:IndexTank辣卒、Lucene掷贾、ElasticSearch等。
·???????Ajax框架:jQuery荣茫、ExtJS想帅、DWR等。
·???????UI插件:EasyUI啡莉、MiniUI等港准。
·???????富文本框:UEditor旨剥、CKEditor等。
面試提問(wèn)
·???????項(xiàng)目是為哪個(gè)公司開(kāi)發(fā)的浅缸?項(xiàng)目的投入是多少轨帜?
·???????有多少人參與了項(xiàng)目開(kāi)發(fā)?整個(gè)團(tuán)隊(duì)中衩椒,測(cè)試人員蚌父、開(kāi)發(fā)人員、項(xiàng)目經(jīng)理比例是多少毛萌?
·???????項(xiàng)目開(kāi)發(fā)了多長(zhǎng)時(shí)間苟弛?項(xiàng)目總的代碼量有多少?你的代碼量有多少阁将?
·???????項(xiàng)目采用了怎樣的開(kāi)發(fā)模型或開(kāi)發(fā)流程膏秫?項(xiàng)目的架構(gòu)是怎樣的?項(xiàng)目的技術(shù)選型是怎樣的做盅?
·???????你在項(xiàng)目中承擔(dān)了怎樣的職責(zé)缤削?是否經(jīng)常開(kāi)會(huì)或加班?項(xiàng)目完成后有哪些收獲或是經(jīng)驗(yàn)教訓(xùn)言蛇?
·???????項(xiàng)目中最困難的部分是什么僻他?如何解決團(tuán)隊(duì)開(kāi)發(fā)時(shí)遇到的各種沖突?
說(shuō)明:對(duì)于沒(méi)有實(shí)際項(xiàng)目經(jīng)驗(yàn)的腊尚,可以在前程無(wú)憂吨拗、智聯(lián)招聘、拉勾網(wǎng)等網(wǎng)站上搜索招聘Java程序員的公司婿斥,找到他們的官方網(wǎng)站了解他們做的項(xiàng)目劝篷,查看項(xiàng)目的詳細(xì)介紹,然后嘗試完成其中一部分功能民宿,最好請(qǐng)教一下高人看看自己的設(shè)計(jì)和代碼是否恰當(dāng)娇妓,這樣相當(dāng)于積累了一定的項(xiàng)目經(jīng)驗(yàn)。
面試題
??Java常見(jiàn)的面試題已經(jīng)總結(jié)成《Java面試題集》活鹰、《Java面試題全集》以及《面試編程題拾遺》等文章陸續(xù)發(fā)布在我的CSDN博客哈恰,各大公司的面試題我會(huì)繼續(xù)整理發(fā)布。
常見(jiàn)錯(cuò)誤
1.????只在計(jì)算機(jī)上練習(xí)
2.????不做行為面試題演練
3.????不做模擬面試訓(xùn)練
4.????試圖死記硬背答案
5.?不大聲說(shuō)出你的解題思路
6.????代碼不夠嚴(yán)謹(jǐn)
7.????不寫(xiě)測(cè)試代碼
8.????輕言放棄
面試時(shí)可以反問(wèn)面試官的問(wèn)題
1.????我注意到你們使用了X技術(shù)志群,請(qǐng)問(wèn)你們是如何解決Y問(wèn)題的着绷?
2.????為什么你們的產(chǎn)品使用了X技術(shù)而不是Y技術(shù)?據(jù)我所知锌云,X技術(shù)雖然有A荠医、B、C等好處,但也存在D和E問(wèn)題彬向,而Y技術(shù)可以解決D和E問(wèn)題兼贡。
3.????我對(duì)您說(shuō)的X技術(shù)不是太熟悉,但我感覺(jué)它是一個(gè)不錯(cuò)的解決方案娃胆,您能多講講它的工作原理嗎遍希?
4.????你們團(tuán)隊(duì)是如何進(jìn)行項(xiàng)目規(guī)劃的?一周會(huì)有幾次例會(huì)缕棵?每周的代碼量大概是多少孵班?
5.????就X問(wèn)題我能想到的解決方案目前就只有Y了,請(qǐng)問(wèn)您會(huì)怎么解決這個(gè)問(wèn)題招驴?
S.A.R.法則
S.A.R法則是指先描述問(wèn)題的場(chǎng)景篙程,然后解釋你采取的行動(dòng),最后陳述結(jié)果别厘。
算法題的五種解法
1.????舉例法:通過(guò)舉例子發(fā)現(xiàn)其中的一般規(guī)則虱饿。
例子:圓內(nèi)接三角形是銳角三角形的概率是多少?這是搜狗的一個(gè)面試題触趴,可以在圓上隨意畫(huà)三個(gè)點(diǎn)連接成三角形就可以知道答案了氮发。
2.????模式匹配法
例子:一個(gè)有序數(shù)組的元素經(jīng)過(guò)循環(huán)移動(dòng),元素的順序變成"3 4 5 6 1 2"冗懦。怎樣找到數(shù)組中最小的那個(gè)元素爽冕,假設(shè)數(shù)組中的元素各不相同。這個(gè)題目和折半查找看起來(lái)是那么相似披蕉,因此可以借鑒折半查找的算法颈畸,最小元素顯然出現(xiàn)在"mid > right"的轉(zhuǎn)折點(diǎn)。
3.????簡(jiǎn)化推廣法
說(shuō)明:簡(jiǎn)化問(wèn)題規(guī)模和數(shù)據(jù)類型没讲,然后再發(fā)現(xiàn)通用的解法眯娱。
4.????簡(jiǎn)單構(gòu)造法
例子:找出"abcde"的所有可能的排列組合。先考慮只有"a"的情況爬凑,再考慮"ab"的情況徙缴,以此類推。最終你可能會(huì)得到一個(gè)遞歸公式嘁信。這種方法往往會(huì)演變成遞歸法于样。
5.????數(shù)據(jù)結(jié)構(gòu)頭腦風(fēng)暴法
例子:隨機(jī)生成一些數(shù)字,并找出其中位數(shù)潘靖。這種問(wèn)題可以在頭腦中將你了解的數(shù)據(jù)結(jié)構(gòu)過(guò)一遍百宇,看看哪種是最合適的數(shù)據(jù)結(jié)構(gòu)。上面的題目可以建立兩個(gè)堆秘豹,一個(gè)大根堆和一個(gè)小根堆,較小的元素放在大根堆昌粤,較大的元素放在小根堆既绕,如果兩個(gè)堆不平衡啄刹,可以從其中一個(gè)堆取出元素放入另一個(gè)堆即可。最后中位數(shù)應(yīng)該是兩個(gè)堆的根之一凄贩。
錄用談判
1.????要理直氣壯的提出具體的待遇要求
2.????開(kāi)出比預(yù)期稍高的價(jià)碼
3.????不要只盯著薪水(很多公司更愿意就薪水之外的條件做出讓步)
4.????使用最合適的方法(可以嘗試在電話或E-mail中談判待遇)
自我評(píng)價(jià)
1.????學(xué)習(xí)能力(搞IT行業(yè)的人需要不斷的了解新的技術(shù)誓军、工具和方法)
2.????團(tuán)隊(duì)意識(shí)(相比個(gè)人英雄主義,IT行業(yè)更倡導(dǎo)團(tuán)隊(duì)合作)
3.????抗壓能力(很多IT企業(yè)的工作強(qiáng)度相對(duì)來(lái)說(shuō)還是比較大的)
分支詳解
面試技巧
1疲扎、背熟你的簡(jiǎn)歷
原因:面試的第一個(gè)問(wèn)題昵时,一般都是讓你簡(jiǎn)單介紹下你自己,或者介紹一下你最近的項(xiàng)目椒丧,而一個(gè)面試者壹甥,如果連自己的簡(jiǎn)歷都無(wú)法熟知,對(duì)里面提到的項(xiàng)目壶熏、技術(shù)都無(wú)法描述清楚的話句柠,我想沒(méi)有哪家公司會(huì)接受這樣的,哪怕你是超級(jí)人才棒假,你自我表述不行溯职,估計(jì)也會(huì)為此頭疼,所以帽哑,切記:一定要背好自己的簡(jiǎn)歷谜酒,不要求你能全部記下,至少要熟記你最近所待過(guò)的兩家公司妻枕,這兩家公司里面你做過(guò)的項(xiàng)目僻族,你負(fù)責(zé)的模塊,項(xiàng)目里面用到的技術(shù)以及相對(duì)應(yīng)的技術(shù)實(shí)現(xiàn)方案(這個(gè)尤為重要)佳头。
2蒜撮、深入了解并熟記部分Java基礎(chǔ)知識(shí)
原因:大部分公司無(wú)論面試初級(jí)還是高級(jí),無(wú)論是筆試還是面試鹰祸,都會(huì)問(wèn)到一系列基礎(chǔ)題巩割,這些基礎(chǔ)題大概涵括jvm、字符串亭珍、集合敷钾、線程等等,如果說(shuō)每一個(gè)讓你死記硬背你肯定記不住肄梨,那么就是理解中記憶了阻荒,拿jvm來(lái)說(shuō) ,如果讓你談?wù)勀銓?duì)jvm的理解众羡, 那么你首先得知道JVM有哪些結(jié)構(gòu)組成侨赡,每個(gè)結(jié)構(gòu)用來(lái)做什么的,然后考慮一個(gè)Java對(duì)象從創(chuàng)建到回收,如何途徑JVM這些結(jié)構(gòu)的羊壹。如果你從這些方面來(lái)綜合記憶蓖宦,相信事半功倍,并且你理解的更透徹油猫。
至于如果讓你談集合稠茂,舉例List集合下面ArryList、LinkedList情妖、Vector等集合的區(qū)別睬关,那么同樣的方法,你需要理解每一個(gè)的結(jié)構(gòu)組成是什么毡证,你才能知道他有什么作用电爹,這樣你在平時(shí)的用法上會(huì)更精煉,而且在面試過(guò)程中情竹,也不至于啞口無(wú)言藐不。
3、保持自信心和沉重冷靜的心態(tài)
原因:面試過(guò)程中秦效,自信是少不了的雏蛮,相信你可以, 面試的路上可以自己對(duì)自己說(shuō)一句: I belive I can ! 反正我就是這么做的阱州,自我的心里暗示吧挑秉,其實(shí)面對(duì)面試官的時(shí)候,你自信的狀態(tài)也會(huì)讓面試官覺(jué)得你是個(gè)很有底氣的人苔货,至少?gòu)母杏X(jué)上會(huì)給你打個(gè)高分犀概。
另外還有就是保持沉重冷靜,如果是讓你提供技術(shù)方案或者說(shuō)說(shuō)某個(gè)技術(shù)原理夜惭,沒(méi)必要一緊張一咕嚕的什么都說(shuō)姻灶,你可以對(duì)面試官說(shuō):我先想想,然后自己組裝記憶中的知識(shí)诈茧,組裝下語(yǔ)言产喉,有條理的說(shuō)出來(lái),這樣能更好的表現(xiàn)你的才能敢会,不是嗎曾沈? 面試誰(shuí)都會(huì)緊張,我也會(huì)緊張鸥昏,有時(shí)候明明記得的知識(shí)點(diǎn)忘了塞俱,沒(méi)關(guān)系,大膽的說(shuō)忘了吏垮,或者直接說(shuō)不知道障涯。 要記住罐旗,有部分不知道沒(méi)關(guān)系,如果全都知道唯蝶,那你應(yīng)該是CTO級(jí)別了(開(kāi)個(gè)玩笑)尤莺。
4、盡量記住面試過(guò)程中你回答不出來(lái)或者存在不妥的問(wèn)題
原因:面試失敗了沒(méi)關(guān)系生棍,畢竟每個(gè)公司的要求不一樣,問(wèn)的問(wèn)題和你擅長(zhǎng)的方面可能有所出入媳谁,但是請(qǐng)記住一點(diǎn):面試過(guò)程中那些你回答不出來(lái)問(wèn)題涂滴,或者你自己感覺(jué)回答不太準(zhǔn)確的問(wèn)題,自己記下來(lái)晴音,如果不會(huì)的柔纵,你可以當(dāng)場(chǎng)問(wèn)問(wèn)面試官有沒(méi)有好的解答,如果面試官不愿意告訴你(一般是基礎(chǔ)方面面試官就懶得答你)锤躁,那么你就自己回家慢慢查資料搁料,如果是某些特定的技術(shù),也可以自己寫(xiě)寫(xiě)案例什么的系羞,畢竟知識(shí)點(diǎn)就那么多郭计,問(wèn)題百變,原理不變椒振,面試也是一個(gè)學(xué)習(xí)知識(shí)的過(guò)程昭伸,讓你了解大部分公司目前需要或者要求的技術(shù)。這次不知道澎迎,下次就知道了庐杨。
5、去面試之前夹供,最好先了解你要去面試公司的情況
原因:俗話說(shuō)灵份,知己知彼,百戰(zhàn)不殆哮洽,面試就是一場(chǎng)戰(zhàn)斗填渠,你需要了解你面試公司基本情況,包括崗位要求袁铐,這樣你就能大概知道你需要面試的這家公司的技術(shù)要求情況揭蜒。 為何讓你去了解這家公司的主營(yíng)產(chǎn)品和項(xiàng)目呢,就是讓你大概了解這家公司的一個(gè)技術(shù)架構(gòu)的情況剔桨,包括你可能對(duì)他們的一種實(shí)現(xiàn)方式提出質(zhì)疑和疑惑屉更,相信面試官很愿意幫你解答這些問(wèn)題的。這樣你既圖了表現(xiàn)洒缀,也學(xué)到了知識(shí)瑰谜,何樂(lè)而不為欺冀。
6、合理安排你的面試時(shí)間
原因:估計(jì)很多人都不理解這個(gè)萨脑,可能大部分的人對(duì)于如何安排面試時(shí)間比較迷茫隐轩,隨意安排〔吃纾可是這里有個(gè)技巧职车,如果同時(shí)有多個(gè)面試機(jī)會(huì),你把你最想去的公司放到最末尾去面試鹊杖,這樣你經(jīng)歷過(guò)了前面的這些公司篩選悴灵,如果成功了是個(gè)機(jī)會(huì),如果沒(méi)成功骂蓖,也是為最后做鋪墊积瞒。
不過(guò)這里就需要考慮兩點(diǎn):1、你需要記住你投簡(jiǎn)歷的公司和基本情況(這說(shuō)明你不是海投的) 2登下、如果記不住茫孔,那么可以先應(yīng)答一個(gè)時(shí)間,后續(xù)了解公司信息之后被芳,通過(guò)郵件或者其他方式與其約定缰贝,調(diào)整面試時(shí)間。而且建議安排一天的面試公司不要超過(guò)兩家筐钟,最好的是上午一家揩瞪,下午一家,這樣你能有充足的時(shí)間調(diào)整狀態(tài)篓冲。
Java基礎(chǔ)
1.數(shù)組中的排序問(wèn)題(筆試或者機(jī)試李破,前者可能性更大)
2.面向?qū)ο蟮睦斫?/b>
面向?qū)ο笾饕兴膫€(gè)特性:
封裝、抽象壹将、繼承和多態(tài)嗤攻。
封裝:在面向?qū)ο笳Z(yǔ)言中,封裝特性是由類來(lái)體現(xiàn)的诽俯,我們將現(xiàn)實(shí)生活中的一類實(shí)體定義成類妇菱,其中包括屬性和行為(在Java中就是方法),就好像人類暴区,可以具有name,sex,age等屬性闯团,同時(shí)也具有eat(),sleep()等行為,我們?cè)谛袨橹袑?shí)現(xiàn)一定的功能仙粱,也可操作屬性房交,這是面向?qū)ο蟮姆庋b特性;
抽象:抽象就是將一類實(shí)體的共同特性抽象出來(lái)伐割,封裝在一個(gè)抽象類中候味,所以抽象在面向?qū)ο笳Z(yǔ)言是由抽象類來(lái)體現(xiàn)的刃唤。比如鳥(niǎo)就是一個(gè)抽象實(shí)體,因?yàn)槌橄髮?shí)體并不是一個(gè)真正的對(duì)象白群,它的屬性還不能完全描述一個(gè)對(duì)象尚胞,所以在語(yǔ)言中體現(xiàn)為抽象類不能實(shí)例化;
繼承:繼承就像是我們現(xiàn)實(shí)生活中的父子關(guān)系帜慢,兒子可以遺傳父親的一些特性笼裳,在面向?qū)ο笳Z(yǔ)言中,就是一個(gè)類可以繼承另一個(gè)類的一些特性粱玲,從而可以代碼重用侍咱,其實(shí)繼承體現(xiàn)的是is-a關(guān)系,父類同子類在本質(zhì)上還是一類實(shí)體密幔;
多態(tài):多態(tài)就是通過(guò)傳遞給父類對(duì)象引用不同的子類對(duì)象從而表現(xiàn)出不同的行為
3.集合相關(guān)的問(wèn)題
比如:Set與List的區(qū)別。ArrayList與Linkedlist區(qū)別撩轰。HashMap與HashTable區(qū)別胯甩。搞清楚每個(gè)集合對(duì)象的特性就歐了。
Map或者HashMap的儲(chǔ)存原理
答:HashMap是由數(shù)組+鏈表的一個(gè)結(jié)構(gòu)組成堪嫂,具體參照:HashMap的實(shí)現(xiàn)原理偎箫。
4.多線程問(wèn)題
多線程啟動(dòng)方式,以及產(chǎn)生死鎖的原因和解決辦法皆串,樂(lè)觀鎖悲觀鎖淹办,線程同步,創(chuàng)建方法jdk1.5之前/之后【多線程問(wèn)題不是很常問(wèn)恶复,有精力就復(fù)習(xí)這塊內(nèi)容】
SimpleDataFormat是非線程安全的怜森,如何更好的使用而避免風(fēng)險(xiǎn)呢?
答:關(guān)于SimpleDateFormat安全的時(shí)間格式化線程安全問(wèn)題谤牡。
5.IO流
了解常見(jiàn)的幾個(gè)流對(duì)象以及基本的流操作即可副硅,被機(jī)試的可能性比較小。
6.數(shù)據(jù)結(jié)構(gòu)
例如:集合翅萤,枚舉
7.設(shè)計(jì)模式
單例恐疲,工廠,MVC等
如何看待設(shè)計(jì)模式套么,并簡(jiǎn)單說(shuō)說(shuō)你對(duì)觀察者模式的理解
設(shè)計(jì)模式有神馬用
觀察者模式類圖及實(shí)現(xiàn)培己。
8.排序算法
冒泡,快速胚泌,基數(shù)省咨,插入,希爾等
9.JVM??JVM結(jié)構(gòu)原理诸迟、GC工作機(jī)制詳情
GC回收茸炒,調(diào)優(yōu)愕乎,內(nèi)存溢出
答:具體參照:JVM結(jié)構(gòu)、GC工作機(jī)制詳解壁公,說(shuō)到GC感论,記住兩點(diǎn):1、GC是負(fù)責(zé)回收所有無(wú)任何引用對(duì)象的內(nèi)存空間紊册。 注意:垃圾回收回收的是無(wú)任何引用的對(duì)象占據(jù)的內(nèi)存空間而不是對(duì)象本身比肄,2、GC回收機(jī)制的兩種算法囊陡,a芳绩、引用計(jì)數(shù)法 b、可達(dá)性分析算法( 這里的可達(dá)性撞反,大家可以看基礎(chǔ)2 Java對(duì)象的什么周期)妥色,至于更詳細(xì)的GC算法介紹,大家可以參考:Java GC機(jī)制算法遏片。
10嘹害、Java對(duì)象的生命周期
答:創(chuàng)建階段 、 應(yīng)用階段 吮便、不可見(jiàn)階段 笔呀、不可達(dá)階段 、收集階段 髓需、終結(jié)階段许师、 對(duì)象空間重新分配階段等等,具體參照:Java 對(duì)象的生命周期僚匆。
11微渠、JavaObject類中有哪些方法?
答:Object有哪些方法咧擂。
JavaWeb
1.http協(xié)議
(定義敛助、常見(jiàn)的請(qǐng)求頭以及響應(yīng)頭<功能>、狀態(tài)碼)
HTTP協(xié)議屋确,GET和POST 的區(qū)別
2.Tomcat
(目錄結(jié)構(gòu)<存放的內(nèi)容以及配置文件里面能做哪些工作>纳击、常見(jiàn)配置;有能力者可以了解一下tomcat的原理<啟動(dòng)加載問(wèn)題>)
3.jdbc
(編程步驟、與hibernate以及mybatis的區(qū)別)
4.servlet
(概念的理解攻臀;生命周期焕数、線程安全問(wèn)題、接口相關(guān)類型刨啸、體系結(jié)構(gòu)<區(qū)別>堡赔、request以及response的用途、servletContext對(duì)象的功能设联、編碼以及路徑問(wèn)題)
5.filter
(生命周期善已、常見(jiàn)應(yīng)用灼捂、dofilter里面的參數(shù)、應(yīng)用場(chǎng)景)
6.jsp
(隱式對(duì)象换团、常見(jiàn)標(biāo)簽<指令悉稠、動(dòng)作>、EL以及JSTL)
內(nèi)置對(duì)象
名稱類型描述
outjavax.servlet.jsp.JspWriter用于頁(yè)面輸出
requestjavax.servlet.http.HttpServletRequest得到用戶請(qǐng)求信息艘包,
responsejavax.servlet.http.HttpServletResponse服務(wù)器向客戶端的回應(yīng)信息
configjavax.servlet.ServletConfig服務(wù)器配置的猛,可以取得初始化參數(shù)
sessionjavax.servlet.http.HttpSession用來(lái)保存用戶的信息
applicationjavax.servlet.ServletContext所有用戶的共享信息
pagejava.lang.Object指當(dāng)前頁(yè)面轉(zhuǎn)換后的Servlet類的實(shí)例
pageContextjavax.servlet.jsp.PageContextJSP的頁(yè)面容器
exceptionjava.lang.Throwable表示JSP頁(yè)面所發(fā)生的異常,在錯(cuò)誤頁(yè)中才起作用
作用域范圍
PageContext常量名描述作用域名稱域?qū)ο箢愋?/p>
PageScope當(dāng)前頁(yè)面中有效pageContextPageContext
RequestScope一次請(qǐng)求范圍requestHttpServletRequest
SessionScope一次會(huì)話范圍sessionHttpSession
ApplicationScope應(yīng)用范圍applicationServletContext
靜態(tài)包含/動(dòng)態(tài)包含
7.cookie/session
(概念的理解想虎;生命周期卦尊,session創(chuàng)建的時(shí)期,相關(guān)方法的使用)
8.Xml定義文檔的形式舌厨,都有什么區(qū)別
a: 兩種定義形式?dtd(文檔類型定義)??schema(XML模式)岂却;
b: XML Schema和DTD都用于文檔驗(yàn)證,但二者還有一定區(qū)別裙椭;
本質(zhì)區(qū)別:schema本身是xml的淌友,可以被XML解析器解析(這也是從DTD上發(fā)展schema的根本目的)。另外:
XML Schema是內(nèi)容開(kāi)放模型骇陈,可擴(kuò)展,功能性強(qiáng)瑰抵;而DTD可擴(kuò)展性差你雌;
XML Schema支持豐富的數(shù)據(jù)類型,而DTD不支持元素的數(shù)據(jù)類型二汛,對(duì)屬性的類型定義也很有限婿崭;
XML Schema支持命名空間機(jī)制,而DTD不支持肴颊;
XML Schema可針對(duì)不同情況對(duì)整個(gè)XML文檔或文檔局部進(jìn)行驗(yàn)證氓栈;而DTD缺乏這種靈活性;
XML Schema完全遵循XML規(guī)范婿着,符合XML語(yǔ)法授瘦,可以和DOM結(jié)合使用,功能強(qiáng)大竟宋;而DTD語(yǔ)法本身有自身的語(yǔ)法和要求提完,難以學(xué)習(xí);
c:有DOM(文檔對(duì)象模型),SAX(Simple API for XML),STAX等
DOM:文檔驅(qū)動(dòng)丘侠,處理大型文件時(shí)其性能下降的非常厲害徒欣。這個(gè)問(wèn)題是由DOM的樹(shù)結(jié)構(gòu)所造成的,這種結(jié)構(gòu)占用的內(nèi)存較多蜗字,而且DOM必須在解析文件之前把整個(gè)文檔裝入內(nèi)存,適合對(duì)XML的隨機(jī)訪問(wèn)
SAX:不同于DOM,SAX是事件驅(qū)動(dòng)型的XML解析方式打肝。它順序讀取XML文件脂新,不需要一次全部裝載整個(gè)文件。當(dāng)遇到像文件開(kāi)頭粗梭,文檔結(jié)束争便,或者標(biāo)簽開(kāi)頭與標(biāo)簽結(jié)束時(shí),它會(huì)觸發(fā)一個(gè)事件楼吃,用戶通過(guò)在其回調(diào)事件中寫(xiě)入處理代碼來(lái)處理XML文件始花,適合對(duì)XML的順序訪問(wèn),且是只讀的孩锡。當(dāng)前瀏覽器不支持SAX
SAXParserFactory?factory=?SAXParserFactory.newInstance();
SAXParser saxparser= factory.newSAXParser();//創(chuàng)建SAX解析器
MyHandler handler=new MyHandler();//創(chuàng)建事件處理器
saxParser.parse(new File(“Sax_1.xml”),handler);//綁定文件和事件處理者
STAX:Streaming API for XML (StAX) Streaming API for XML (StAX)
是用?Java? 語(yǔ)言處理 XML 的最新標(biāo)準(zhǔn)酷宵。StAX 與其他方法的區(qū)別就在于應(yīng)用程序能夠把 XML 作為一個(gè)事件流來(lái)處理。StAX 允許應(yīng)用程序代碼把這些事件逐個(gè)拉出來(lái)躬窜,而不用提供在解析器方便時(shí)從解析器中接收事件的處理程序浇垦。
框架
1.struts2
(action相關(guān)的問(wèn)題<書(shū)寫(xiě)方式[區(qū)別]、接受請(qǐng)求參數(shù)的方式荣挨、相關(guān)配置男韧、訪問(wèn)servletAPI的方式>;值棧相 關(guān)問(wèn)題<定義默垄、內(nèi)部結(jié)構(gòu)此虑、如何獲取值棧對(duì)象、EL為什么能訪問(wèn)值棧中的數(shù)據(jù)>口锭;struts2與springMVC的區(qū)別朦前;攔截器與過(guò)濾器的 區(qū)別;struts2工作原理<執(zhí)行流程>)
2.hibernate
(核心思想要了解鹃操;開(kāi)發(fā)流程<加載文件的過(guò)程>韭寸;查詢方式;如何優(yōu)化荆隘;sql與hql的區(qū)別恩伺;update與 saveOrUpdate的區(qū)別;get和load的區(qū)別椰拒;Java對(duì)象三種狀態(tài)的特征以及轉(zhuǎn)換晶渠、核心API、一級(jí)緩存和二級(jí)緩存燃观、延遲加載)
3.spring
(springIOC和DI乱陡;生命周期;Bean注入屬性的方式仪壮;aop極其相關(guān)名詞解釋憨颠;核心類;applicationContext與beanFactory的區(qū)別;bean實(shí)例化有哪些方式)
4.springMVC
(工作流程爽彤;與struts2的區(qū)別养盗;亂碼問(wèn)題如何處理;各組件的擴(kuò)展類型)
5.mybatis
(與jdbc/hibernate的區(qū)別适篙;)
腳本
1.JavaScript核心對(duì)象
2.瀏覽器BOM對(duì)象
3.文檔對(duì)象模型DOM
4.常見(jiàn)事件
5.Ajax編程
(web交互2種方式的對(duì)比)
6.傳統(tǒng)Ajax編程的步驟以及從服務(wù)器端返回的數(shù)據(jù)格式(之間的差別)
7.JSON數(shù)據(jù)格式的轉(zhuǎn)換操作
8.jQuery選擇器
9.jQuery的Ajax編程(常見(jiàn)方法)
10.其余的問(wèn)題都是一些筆試題往核,讓你直接寫(xiě)javascript代碼實(shí)現(xiàn)某一功能
數(shù)據(jù)庫(kù)緩存
數(shù)據(jù)庫(kù)這一塊幾乎都是一些概念性的問(wèn)答題(存儲(chǔ)過(guò)程、函數(shù)嚷节、事務(wù)聂儒、索引、觸發(fā)器硫痰、視圖衩婚、游標(biāo)以及一些優(yōu)化操作),筆試100%會(huì)出現(xiàn),一般考察的都是多表聯(lián)合查詢
比如:
1效斑、當(dāng)數(shù)據(jù)表中A非春、B字段做了組合索引,那么單獨(dú)使用A或單獨(dú)使用B會(huì)有索引效果嗎缓屠?(使用like查詢?nèi)绾斡兴饕Ч?/p>
答:看A奇昙、B兩字段做組合索引的時(shí)候,誰(shuí)在前面敌完,誰(shuí)在后面储耐,如果A在前,那么單獨(dú)使用A會(huì)有索引效果滨溉,單獨(dú)使用B則沒(méi)有什湘,反之亦然。同理业踏,使用like模糊查詢時(shí),如果只是使用前面%涧卵,那么有索引效果勤家,如果使用雙%號(hào)匹配,那么則無(wú)索引效果柳恐。
2伐脖、數(shù)據(jù)庫(kù)存儲(chǔ)日期格式時(shí),如何考慮時(shí)區(qū)轉(zhuǎn)換問(wèn)題乐设?
答:使用TimeStamp , 原因參照:Java編程中遇到的時(shí)區(qū)轉(zhuǎn)換問(wèn)題讼庇。
3、一條sql執(zhí)行過(guò)長(zhǎng)的時(shí)間近尚,你如何優(yōu)化蠕啄,從哪些方面?
答:
查看sql是否涉及多表的聯(lián)表或者子查詢,如果有歼跟,看是否能進(jìn)行業(yè)務(wù)拆分和媳,相關(guān)字段冗余或者合并成臨時(shí)表(業(yè)務(wù)和算法的優(yōu)化);
涉及鏈表的查詢哈街,是否能進(jìn)行分表查詢留瞳,單表查詢之后的結(jié)果進(jìn)行字段整合;
如果以上兩種都不能操作骚秦,非要鏈表查詢她倘,那么考慮對(duì)相對(duì)應(yīng)的查詢條件做索引。加快查詢速度作箍;
針對(duì)數(shù)量大的表進(jìn)行歷史表分離(如交易流水表)硬梁;
數(shù)據(jù)庫(kù)主從分離,讀寫(xiě)分離蒙揣,降低讀寫(xiě)針對(duì)同一表同時(shí)的壓力靶溜,至于主從同步,MySQL有自帶的binlog實(shí)現(xiàn) 主從同步懒震;
explain分析sql語(yǔ)句罩息,查看執(zhí)行計(jì)劃,分析索引是否用上个扰,分析掃描行數(shù)等等瓷炮;
查看mysql執(zhí)行日志,看看是否有其他方面的問(wèn)題递宅;
個(gè)人理解:從根本上來(lái)說(shuō)娘香,查詢慢是占用mysql內(nèi)存比較多,那么可以從這方面去酌手考慮办龄。
? 4烘绽、集群環(huán)境中,session如何實(shí)現(xiàn)共享
答:1俐填、Java集群之session共享2安接、session多服務(wù)器共享方案,還有一種方案就是使用一個(gè)固定的服務(wù)器專門保持session英融,其他服務(wù)器共享盏檐。
? 5、分布式驶悟、集群環(huán)境中胡野,緩存如何刷新,如何保持同步痕鳍?
答:A硫豆、緩存如何刷新?
1、定時(shí)刷新 2够庙、主動(dòng)刷新覆蓋恭应,每個(gè)緩存框架都有自帶的刷新機(jī)制,或者說(shuō)緩存失效機(jī)制耘眨,就拿Redis和 Ehcache舉例昼榛, 他們都有自帶的過(guò)期機(jī)制,另外主動(dòng)刷新覆蓋時(shí)剔难,只需獲取對(duì)應(yīng)的key進(jìn)行數(shù)據(jù)的覆蓋即可胆屿。
B、緩存如何保持同步偶宫?
?這個(gè)redis有自帶的集群同步機(jī)制非迹,即復(fù)制功能,具體參考:基于Redis分布式緩存實(shí)現(xiàn)纯趋,Ehcache也有分布式緩存同步的配置憎兽,只需要配置不同服務(wù)器地址即可,參照:Ehcache分布式緩存同步吵冒。
人事相關(guān)
1.自我介紹(注重的是你之前在公司里面工作內(nèi)容纯命,特別是最近在公司里面做的項(xiàng)目<回答思路參考項(xiàng)目相關(guān)問(wèn)題一>)
2.簡(jiǎn)單的介紹一下上一家公司的情況/評(píng)價(jià)
3.你為什么來(lái)北京工作,怎樣看待跳槽痹栖?
4.你對(duì)我們公司了解嗎亿汞?
5.你如果有幸進(jìn)入我們公司,有什么規(guī)劃嗎揪阿?
6.你上一家公司的薪資大概是多少疗我?有哪些組成部分?
7.你有沒(méi)有投其它公司南捂?如果其它公司也給了offer吴裤,你會(huì)如何抉擇?
8.你有對(duì)象嗎溺健?打算什么時(shí)候結(jié)婚生孩子麦牺?
9.你對(duì)薪資待遇有什么要求?能再低一點(diǎn)嗎矿瘦?
10.你還有什么問(wèn)題要問(wèn)我嗎枕面?
項(xiàng)目相關(guān)
?1.請(qǐng)介紹一下你最近做的這一個(gè)項(xiàng)目吧
【思路:項(xiàng)目給誰(shuí)做的愿卒、項(xiàng)目涉及的領(lǐng)域缚去、系統(tǒng)的架構(gòu)(功能&技術(shù))、系統(tǒng)的用途琼开、系統(tǒng)的部署易结、使用了哪些比較新穎的技術(shù)】
??2.談?wù)勀銓?duì)電商行業(yè)的了解
【思路:電商行業(yè)的發(fā)展、行業(yè)技術(shù)特點(diǎn)、行業(yè)的一些概念】
?3.你這個(gè)項(xiàng)目大概有哪些功能搞动,你負(fù)責(zé)了哪些核心功能躏精?
【擁有的功能盡可能說(shuō)多一點(diǎn),建議10個(gè)左右套鹅,自己負(fù)責(zé)的3個(gè)大(如商品管理防楷、訂單告组、購(gòu)物車),其余的都是其他組員開(kāi)發(fā)的任務(wù)】
?4.談?wù)剎x(具體的瞭吃,比如商品管理、訂單涣旨、購(gòu)物車)模塊/功能的實(shí)現(xiàn)思路歪架?實(shí)現(xiàn)的過(guò)程中涉及到了哪些技術(shù),這些技術(shù)能介紹下嗎霹陡?
5.你們公司有多少人和蚪?有測(cè)試嗎?有美工嗎烹棉?整個(gè)項(xiàng)目組人員配置是怎么樣的攒霹?項(xiàng)目開(kāi)發(fā)的流程大概是什么樣子的?
【檢驗(yàn)是否有工作經(jīng)驗(yàn)的一個(gè)問(wèn)題】
6.這個(gè)項(xiàng)目使用了什么構(gòu)建工具沒(méi)有峦耘?有的話剔蹋,多模塊之間是如何劃分的?為什么要這么劃分辅髓?
? 7.在這個(gè)項(xiàng)目中是如何設(shè)計(jì)商品規(guī)格的泣崩?
? 8.這個(gè)系統(tǒng)中你是如何實(shí)現(xiàn)跨系統(tǒng)調(diào)用的?
??
? 9.在這個(gè)項(xiàng)目中洛口,CMS系統(tǒng)是如何設(shè)計(jì)的矫付,簡(jiǎn)單的說(shuō)一下設(shè)計(jì)思路
10.在這個(gè)項(xiàng)目中,你們主要使用什么樣的數(shù)據(jù)格式來(lái)進(jìn)行數(shù)據(jù)的傳輸?shù)模?/b>
11.單點(diǎn)系統(tǒng)的設(shè)計(jì)思想你了解嗎第焰?他在系統(tǒng)架構(gòu)中的作用是什么买优?位置如何?
12.你們這個(gè)項(xiàng)目中訂單ID是怎么生成的挺举?我們公司最近打算做一個(gè)電商項(xiàng)目杀赢,如果讓你設(shè)計(jì)這塊,你會(huì)考慮哪些問(wèn)題湘纵?
13.各個(gè)服務(wù)器的時(shí)間不統(tǒng)一怎么辦脂崔?
? 14.你們線上部署時(shí)什么樣的,能畫(huà)一下嗎梧喷?
15.你們生產(chǎn)環(huán)境的服務(wù)器有多少臺(tái)砌左?
??
? ?16.你們使用什么做支付的脖咐?如果使用易寶做支付,請(qǐng)求超時(shí)了怎么處理汇歹?? ?
?
17.你剛才不是說(shuō)付款成功后易寶會(huì)有數(shù)據(jù)返回嗎屁擅?如果付款后易寶沒(méi)有返回,或者返回超時(shí)了产弹,但是錢又已經(jīng)扣了派歌,你怎么辦?
? ?18.你們?cè)趺醋鐾丝罟δ艿奶瞪冢嚅L(zhǎng)時(shí)間才能把錢退回給用戶硝皂?
? ?19.你購(gòu)物車存cookie里邊可以實(shí)現(xiàn)不登錄就可以使用購(gòu)物車,那么我現(xiàn)在沒(méi)有登錄把商品存購(gòu)物車了作谭,然后登錄了稽物,?然后我換臺(tái)電腦并且登錄了還能不能看見(jiàn)我購(gòu)物車的信息?如果看不到怎么做到cookie同步折欠,就是在另外一臺(tái)電腦上可以看到購(gòu)物車信息
? ?20.如果用戶一直向購(gòu)物車添加商品怎么辦贝或?并且他添加一次你查詢一次數(shù)據(jù)庫(kù)?互聯(lián)網(wǎng)上用戶那么多锐秦,這樣會(huì)對(duì)數(shù)據(jù)庫(kù)造成很大壓力你怎么辦咪奖?
? ?21.購(gòu)物車的設(shè)計(jì)細(xì)節(jié)問(wèn)題
其他技術(shù)
? ?1.權(quán)限控制
(一般情況,在公司必須有一定工作經(jīng)驗(yàn)的開(kāi)發(fā)者才會(huì)被分配該功能模塊的開(kāi)發(fā)酱床,這意味著學(xué)員在剛開(kāi)始參加工作的那個(gè)項(xiàng)目里面絕對(duì)不能寫(xiě)的內(nèi)容羊赵。)?這里一般都會(huì)提及shiro技術(shù),在這塊需要掌握shiro相關(guān)的幾個(gè)組件以及他們的調(diào)用關(guān)系扇谣,然后就是權(quán)限設(shè)計(jì)的幾張數(shù)據(jù)庫(kù)表(表之間的關(guān)系以及每張表里面的重要字段)
? ?2.搜索系統(tǒng)
(普通的查詢會(huì)讓面試官問(wèn)及效率問(wèn)題昧捷,那么勢(shì)必要提到全文檢索技術(shù),由于剛學(xué)不是很熟罐寨,根據(jù)自己掌握的情況進(jìn)行選擇)? ?
? 3.瀏覽器跨域問(wèn)題
(前臺(tái)系統(tǒng)調(diào)用可以使用jsonp來(lái)實(shí)現(xiàn)瀏覽器跨域問(wèn)題靡挥,去年有學(xué)員花幾個(gè)小時(shí)學(xué)習(xí)這個(gè),僅憑此技術(shù)入職8K鸯绿。)
? 4.webservice
(該技術(shù)已有替代技術(shù)跋破,如果不會(huì),可以不用花時(shí)間去復(fù)習(xí))
? 5.Linux
(水太深瓶蝴,只談自己在項(xiàng)目中就部署的時(shí)候用了一下即可)
? 6.redis
(根據(jù)自己的能力看是否需要提及次技術(shù)毒返,畢竟購(gòu)物車的實(shí)現(xiàn)方式比較多。)
設(shè)計(jì)方案相關(guān)
面試還會(huì)問(wèn)到一些關(guān)于設(shè)計(jì)方案相關(guān)的問(wèn)題舷手,比如:
1拧簸、你的接口服務(wù)數(shù)據(jù)被人截包了,你如何防止數(shù)據(jù)惡意提交聚霜?
答:我們可以在接口傳輸參數(shù)里面設(shè)置一個(gè)業(yè)務(wù)編號(hào)狡恬,這個(gè)編號(hào)用來(lái)區(qū)分是否重復(fù)提交。這樣即使數(shù)據(jù)被抓包了蝎宇,對(duì)方也無(wú)法區(qū)分每個(gè)字段你的含義弟劲,這時(shí),這個(gè)業(yè)務(wù)編號(hào)的作用就來(lái)了姥芥。
2兔乞、假設(shè)服務(wù)器經(jīng)常宕機(jī),你從哪些方面去排查問(wèn)題凉唐?
答:這個(gè)就留個(gè)各位看官補(bǔ)充了庸追。
總而言之該看的還是得看,還學(xué)的還是得學(xué)台囱。再次強(qiáng)調(diào)淡溯,基礎(chǔ)很重要!面試技巧同樣很重要簿训,還是那句話:祝愿各位看官都能找到心儀的工作吧~~
另外咱娶,奉勸大家不要頻繁跳槽,這些知識(shí)點(diǎn)能提升固然好强品,不要盲目跳槽膘侮,找工作很累的,而且沒(méi)有哪家公司喜歡頻繁跳槽的員工的榛。
跳槽應(yīng)該學(xué)的技術(shù)
互聯(lián)網(wǎng)產(chǎn)品琼了、大型企業(yè)級(jí)項(xiàng)目常會(huì)用到的:
1.并發(fā)處理技術(shù)。具體到Java上通常是涉及java.util.concurrent夫晌、并發(fā)鎖機(jī)制雕薪、NIO等方面,當(dāng)然最近比較火爆的Netty框架也可以作為高并發(fā)處理的備選方案之一晓淀,這需要對(duì)Java的線程調(diào)度機(jī)制有著比較深的理解蹦哼。不過(guò)這些可能會(huì)涉及并發(fā)控制的對(duì)象(比如reentrantlock等)只能存在于一個(gè)JVM里的問(wèn)題,一旦系統(tǒng)規(guī)模大到需要部署多個(gè)JVM來(lái)處理并發(fā)的情況要糊,則需要采用共享session的技術(shù)(比如spring-session)纲熏,或者盡可能將系統(tǒng)后臺(tái)設(shè)計(jì)為無(wú)狀態(tài)的服務(wù),這需要對(duì)RESTful有著較深的理解锄俄。
2.高可用局劲、負(fù)載均衡技術(shù)∧淘互聯(lián)網(wǎng)產(chǎn)品鱼填、企業(yè)級(jí)應(yīng)用通常要求一年里的Downtime控制在很小的范圍內(nèi),這需要足夠的高可用和負(fù)載均衡架構(gòu)來(lái)支撐毅戈,這個(gè)一般和Java技術(shù)本身沒(méi)太大關(guān)系苹丸,但卻是一名初級(jí)程序員向高級(jí)程序員甚至是架構(gòu)師CIO進(jìn)階的必備技術(shù)愤惰,因此可以適當(dāng)了解一下Nginx、HAProxy等對(duì)這方面的支持赘理。另外現(xiàn)在最“時(shí)髦”的做法是將應(yīng)用docker化宦言,配合ETCD、kubernetes等工具在容器的層面上實(shí)現(xiàn)高可用和負(fù)載均衡商模,當(dāng)然這需要看實(shí)際的需求奠旺,最時(shí)髦的不見(jiàn)得是最適用的,要考慮構(gòu)建成本施流。
3.緩存技術(shù)响疚。緩存應(yīng)該是大型系統(tǒng)中或高并發(fā)條件下提高響應(yīng)速度的亙古不變的真理(雖然也看到過(guò)淘寶搜索商品功能采用的大數(shù)據(jù)處理技術(shù)實(shí)現(xiàn)的零緩存的文章,但能達(dá)到淘寶的體量和技術(shù)水平一般不太可能)瞪醋,這方面的工具太多了忿晕,ehcache、memcached银受、redis……從Java的角度來(lái)講杏糙,需要了解的一是Java對(duì)這些工具的連接器,二是緩存技術(shù)背后的JSR-107標(biāo)準(zhǔn)蚓土,可以參考spring-cache的實(shí)現(xiàn)宏侍,閱讀一下源碼加深理解。
4.異步處理技術(shù)蜀漆。這通常也是抵消高并發(fā)的處理手段之一谅河,從Java的角度看最簡(jiǎn)單的異步處理就是新啟動(dòng)一個(gè)異步線程,這同樣也需要對(duì)Java的線程調(diào)度有所了解确丢,當(dāng)然也可使用Spring中的@Async之類的也可以簡(jiǎn)單實(shí)現(xiàn)異步線程的處理绷耍。如果是非常消耗資源的業(yè)務(wù)處理,簡(jiǎn)單的異步線程是滿足不了需求的鲜侥,這就需要一些消息中間件來(lái)做這些異步處理了褂始,消息中間件有很多,activemq描函、rabbitmq崎苗、kafka……需要了解的是Java對(duì)這些中間件的連接器。不過(guò)異步處理中最關(guān)鍵的是事務(wù)保證的問(wèn)題舀寓,這可能需要對(duì)事務(wù)的兩步提交有所了解胆数。
點(diǎn)擊“閱讀全文”,查看詳情