{eval=Array;=+count(Array);}
Java開發基本上都是進行后端(服務端)開發,根據方向不同開發的側重點還是有所區別,所以準備面試之前需要對工作方向有一個大致的了解,這樣才能有針對性的進行準備。
Java開發很大一部分是從事Web后端開發,做Web后端開發需要準備的內容比較多,大致分為以下幾個部分:
Java除了做Web后端開發還可以做大數據以及android app的開發,如果從事大數據開發需要對算法有深入細致的了解,比如常見的KNN算法、決策樹、樸素貝葉斯、回歸等。
如果對Java編程感興趣可以關注我,我在頭條上寫了關于Java開發的系列文章,以后會陸續更新最新的Java技術。
首先不知道你要面試的是那個級別的Java程序師,那面主要從要撐握的主要技能方面來說一下。
spring框架是做Java框架基本避不開的基礎系列,意思是說學好Spring對后面的學習是非常重要的基礎。
Spring是一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器框架。輕量——從大小與開銷兩方面而言Spring都是輕量的。完整的Spring框架可以在一個大小只有1MB多的JAR文件里發布。并且Spring所需的處理開銷也是微不足道的。此外,Spring是非侵入式的:典型地,Spring應用中的對象不依賴于Spring的特定類。控制反轉——Spring通過一種稱作控制反轉(IoC)的技術促進了松耦合。當應用了IoC,一個對象依賴的其它對象會通過被動的方式傳遞進來,而不是這個對象自己創建或者查找依賴對象。你可以認為IoC與JNDI相反——不是對象從容器中查找依賴,而是容器在對象初始化時不等對象請求就主動將依賴傳遞給它。面向切面——Spring提供了面向切面編程的豐富支持,允許通過分離應用的業務邏輯與系統級服務(例如審計(auditing)和事務(transaction)管理)進行內聚性的開發。應用對象只實現它們應該做的——完成業務邏輯——僅此而已。它們并不負責(甚至是意識)其它的系統級關注點,例如日志或事務支持。
而由于spring是Java的一個基礎框架,所以有很多Java上的其它方案可以在spring中集成,對于Java來說spring 非常重要。
數據庫基本也是無論大小項目都需要的一個環節,因為數據庫都要要持久化。
國內常用的數據庫主要是Mysql。
mysql的主要學習點:
1、如何優化sql語句。
2、如何按照場景使用范式設計還是非范式設計。
3、學習事務。
4、主從庫。
5、分區。
6、分庫分表。
如果公司產品還在單點階段那么通過人工發布還沒有什么問題,如果公司產品已處在多點或Soa等微服務階段再通過人手打包或發布就會不太合理。
Maven
maven是一個項目管理工具,它包含了一個項目對象模型 (Project Object Model),一組標準集合,一個項目生命周期(Project Lifecycle),一個依賴管理系統(Dependency Management System),和用來運行定義在生命周期階段(phase)中插件(plugin)目標(goal)的邏輯。當你使用Maven的時候,你用一個明確定義的項目對象模型來描述你的項目,然后Maven可以應用橫切的邏輯,這些邏輯來自一組共享的(或者自定義的)插件。
通過maven構建的產品,再通過持續集成工具進行自動化發布。
-----------------------------------
本人現處廣州從事互聯網工作多年,資深技術人員、管理人員。愿結識有互聯網業務的技術人員或企業人員。
起碼先準備下面試題哈。
ucloud巴巴Java面試題(一)
1、String和StringBuffer的區別
2、gc的概念,如果A和B對象循環引用,是否可以被GC?
3、Java中的內存溢出是如何造成的
4、String s = “123”;這個語句有幾個對象產生
5、Error、Exception和RuntimeException的區別,作用又是什么?
6、列舉3個以上的RuntimeException
7、reader和inputstream區別
8、hashCode的作用
9、Object類中有哪些方法,列舉3個以上(可以引導)
10、char型變量中能不能存貯一個中文漢字?為什么?
11、列舉幾個Java Collection類庫中的常用類
12、List、Set、Map是否都繼承自Collection接口?
13、HashMap和Hashtable的區別
14、HashMap中是否任何對象都可以做為key,用戶自定義對象做為key有沒有什么要求?
15、interface 和 abstrat class的區別 是否可以繼承多個接口,是否可以繼承多個抽象類
16、 啟動一個線程是用run()還是start()? 多線程有幾種實現 同步和并發是如何解決的 什么叫守護線程,用什么方法實現守護線程(Thread.setDeamon()的含義) 如何停止一個線程? 解釋是一下什么是線程安全?舉例說明一個線程不安全的例子。解釋Synchronized關鍵字的作用。 當一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法?
17、了解過哪些JDK8的新特性,舉例描述下相應的特性?
18、對sql進行優化的原則有哪些?
19、servlet生命周期是生命與cgi的區別?
20、StringBuffer有什么優勢?為什么快?
ucloud巴巴面試題(二):
1.介紹你做過的項目,用到的技術,涉及到的模塊,然后從項目中問各種技術實現的細節(為了確保你是真的懂了).
2.看你的試卷,喊你講解做題的思路,以及這樣結果的原因.(考的是各位的java基礎知識了,這點是繞不過去的,懂了就懂了啊,只有平時多看書)
3.團購6位驗證碼以及團購成功后,發送到你手機上的條碼的實現方式.(第一個問題我說用隨機數+時間來驗證.第二個問題老實說,我也沒答上來,我說用序列,面試官說序列到后期20位以上的時候,用戶體驗很差的)
4.淘寶上是如何保證庫存和訂單之間的數據準確性的.(考點是分布式事務,這個問題我也沒答上來,最后他問我有什么問題問他的時候,我就反問的這個問題,面試官人挺好的,給我耐心的講解了一遍淘寶的實現方式以及
epay的實現方式. 淘寶是通過分布式事物,中間用了一個叫協調者角色的程序,當那邊點擊購買時,會庫存減一,保存一條預扣的狀態,但是是個預準備狀態,然后做成功后,協調者會在另一個數據庫生成訂單,然后這個訂單也是預狀態,等兩邊都準備好以后,通知協調者,又協調者統一完成這2個數據庫的事物,從而達到完成一筆交易的目的,若其中一方失敗,則將預扣的數字返回到庫存從而實現類似回滾的操作.)
5.索引的原理.能否構建時間索引.時間索引構建后會存在什么問題.(索引原理我是回答的堆表索引的構建原理以及查詢原理,但是關于時間索引的問題,我也沒回答出個所以然來,看面試官的反饋,好像回答得不夠好吧)
6.你們數據庫的數據量有多大,(回答:我們是電信方面的系統,表上億的數據很正常).問:如果保證效率?
(我是如此回答的,各位自行結合自身的情況參考.答:后臺J OB程序會定期備份,把生產表數據移走,然后備份表也會再備份一次,如此剃度的備份,保證生產庫的數據是最小的.然后備份表采用分區和子分區,加上構建戰略索引(分析系統的sql,常用
查詢字段構建復合索引,以減少每次查詢時對表的訪問次數)).
7.SQL注入的原理以及如何預防,并舉例.(這個相對簡單,網上一搜一大片)
8.使用過Memcache么? 用在項目中哪些地方? (答,在門戶主機上使用,緩存session,分布式的時候,統一訪問這臺主機驗證用戶session是否存在,來維持回話的狀態和實現回話同步.又追問:java代碼中如何實現訪問門戶服務器的這個session池子的? 幾年前的代碼,確實忘記了..于是坦白的說,記不清楚了 )
這些是主要的問題,當你回答一個大問題時中間還有很多比較碎的追問性質的小問題,總體給我的感覺是,氛圍很輕松+愉快的,技術層面上還是需要你真正的理解透徹一些關鍵技術點,才能做到應付各種追問和給出滿意的答案吧.如果只是一知半解想去蒙混過關肯定是不行的,畢竟在支付寶的技術大牛面前,多追問幾句,也就把你逼到死角了.
還有一點比較重要的感覺就是,他們比較在意你是否了解當下的一些比較熱的技術點,比如淘寶的秒殺,是如何保證高并發下的安全性和性能,新浪微博那種大數據量的發送,怎么就保證正確性和時效性的.
ucloud巴巴面試題(三):
1.談談你對HashMap的理解,底層原理的基本實現,HashMap怎么解決碰撞問題的?
2.開發中用了那些數據庫?回答mysql,儲存引擎有哪些?然后問了我悲觀鎖和樂觀鎖問題使用場景、分布式集群實現的原理。
3.springmvc和mybatis的工作原理,有沒有看過底層源碼?
4.熟悉IO么?與NIO的區別,阻塞與非阻塞的區別
5.微信紅包怎么實現。
6.海量數據分析。
7.線程安全和非線程安全。
8.HTTP2.0、thrift。
9.java反射應用
10.分布式事務一致性。
11.nio的底層實現。
12.jvm基礎是必問的,jvm GC原理,JVM怎么回收內存。
13.API接口與SDI接口的區別
14.dubbo如何一條鏈接并發多個調用。Dubbo的原理,序列化相關問題。
15.用過哪些中間件。
16.做過工作流引擎沒有。
17.以前的工作經歷,自己覺得出彩的地方
18.線程池的一些原理,鎖的機制升降級
19.從系統層面考慮,分布式從哪些緯度考慮
20.Hadoop底層怎么實現
21.threadLocal,線程池,hashMap/hashTable/coccurentHashMap等
22.秒殺系統的設計
23.虛擬機,IO相關知識點
24.Linux的命令
25.一個整形數組,給定一個數,在數組中找出兩個數的和等于這個數,并打印出來,我寫的時間復雜度高,要求O(n)。
26.n個整數,找出連續的m個數加和是最大。
27.更重視開源技術
28.數據庫鎖隱原理
29.1000個線程同時運行,怎么防止不卡
30.并列的并發消費問題)
31.高并發量大的話怎么處理熱點,數據等
32.如何獲取一個本地服務器上可用的端口
33.流量控制相關問題
34.數據庫TPS是多少,是否進行測試過
35.緩存擊穿有哪些方案解決
36.Java怎么挖取回收器相關原理
37.Java的集合都有哪些,都有什么特點
38.分布式鎖,redis緩存,spring aop,系統架構圖,MySQL的特性
39.場景,同時給10萬個人發工資,怎么樣設計并發方案,能確保在1分鐘內全部發完 打個比方會提出類似的場景
1-3頁面試題,第4頁筆試題加Java招聘信息。[page]
支付寶筆試題
(1). cookie 和 session 的區別
cookie機制采用的是在客戶端保持狀態的方案,
而session機制采用的是在服務器端保持狀態的方案。
1、cookie數據存放在客戶的瀏覽器上,session數據放在服務器上。
2、cookie不是很安全,別人可以分析存放在本地的COOKIE并進行COOKIE欺騙
考慮到安全應當使用session。
3、session會在一定時間內保存在服務器上。當訪問增多,會比較占用你服務器的性能
考慮到減輕服務器性能方面,應當使用COOKIE。
4、單個cookie保存的數據不能超過4K,很多瀏覽器都限制一個站點最多保存20個cookie。
5、將登陸信息等重要信息存放為SESSION
其他信息如果需要保留,可以放在COOKIE中
(2). JVM 內存模型
(3). SQL注入的原理
(4). . 悲觀鎖 和 樂觀鎖
(5). . 讀程序,輸出結果. 關于treemap的
(6). . linux 基礎命令,統計日志中的信息
(7). . java 分布式集群
(8). . 一道設計題,具體到數據庫的表.大概是淘寶的搜索中,輸入手機,會出來很多類型,按品牌按價格區間按手機種類.
Java后臺開發崗是根據工作年限的不同,等級也不同的。1-3年經驗,是初級開發工程師,3-5年為中級開發工程師,5年以前也一般為高級開發工程師的錄用標準。對于絕大多數公司,對面試者的工作經驗是硬性標準,并且對于不同階段的員工,面試是有不同的要求的。
1 Java初級或者初級不到的應屆生入門階段。
本階段的面試都是考Java基礎,集合,JVM等基礎概念的考驗,因為這個階段別人都知道,你工作經驗不多,所以在項目經驗上的要求不會太高,基本有1-2兩個項目經驗就夠了,對基礎的考察會非常注重,比如常見的排序算法等,都是必須要去準備的,這些都是必不可少的。基礎不扎實,基本就沒戲了。
2 Java中級開發工程師
這一階段面試項目經驗就非常重要了,這三年來你做的項目是哪方面的,Web項目還是JavaEE項目,有無千萬級數據大項目等等都是面試官非常看重的,對于這一階段,筆試基本就是個擺設,有的公司可能看到經驗就直接免了筆試,畢竟經驗放在這里。然后就是之前做的項目和面試公司所需是否對口,這個也非常關鍵。
3 Java高級開發工程師
這一階段老實說就不單單是經驗的問題了,對理論方面Java底層源碼,流行框架底層源碼的理解成了重中之重,Redis等中間件的使用,數據庫調優經驗等都是必不可少的,工作年限達到了,理論研究沒上去也是不行的,這一階段的面試,就像是神仙打架級別的,難度是非常大的。
1 準備下基本的數據結構相關的:如鏈表/二叉樹等常見問題,排序等等
2 各個公司的面試風格可能不一樣,提前找點相關的,心里不慌
3 java相關的,如jvm底層,設計模式等等
4 后臺開發相關的,架構設計/MVC/數據庫/并發/分布式/消息隊列/rpc等等
5 開源框架如果有了解的話,再復習一下
6 做過的項目,這個好好準備一下
7 可以找幾家面面試試,要做好每次的總結
很多Java程序員在面試時,通常會遇到以下幾個問題(幾個比較經典的)!下面,跟著我一起來看看具體是哪幾個問題吧!
1、自我感覺自己的Java的技術不錯,但是面試往往不如人意;
2、對面試官提出的問題很懵,不知道它問的是什么?
3、面試才開始,有些面試官就瘋狂地從知識基礎的開始詢問;
4、一些面試官一直在問有關業務場景的問題,完全不知道面試前要準備什么。
面試(無論是為了找工作還是升職)是我們每個人都無法逃避的事情。有時候,與其一味寫代碼,不如提升一下自己的面試技巧。我特意搜集了很多信息,整理,現在分享給大家!
能否熟練掌握Java基礎知識,是一項被許多大公司高度重視的基本能力,但總有人追求高深的技術,而忽略它。如果您的底層知識扎實,一套完整的框架知識,這將會為您未來所有的面試打下堅實的基礎。
面試官針對不同的Java崗位要求,對能力考察的重點有些差異!
如果你是參加校招,會重點看到你的基本知識,邏輯思維,更多以挖掘潛力為主;
如果你是初級Java工程師,你需要注重基本知識的應用和自身掌握知識的廣度;
對于資深或高級Java工程師來說,更需要對基本原理有深刻的理解,并且能夠靈活地使用各種知識,一般以綜合能力為主。
不同類型的公司對候選人的能力需要而不同。對于社交門戶,Java工程師的考察知識是大規模和高并發場景的應用和體系結構能力。
O2O行業將重點放在對求職者綜合能力的考察;
互金更喜歡具有縝密的邏輯思維和在高可用性安全領域經驗豐富的候選人。
因此,為了提高面試合格率,達到事半功倍的效果,面試前應根據公司類型和崗位要求進行特殊準備。
綜合以上我分享的這三個維度準備面試,通過率就會大大提高。但是,如果你真的想輕松地應對面試,還需要和大工廠的面試官進行溝通交流,了解更多關于面試的核心技能。這樣,您就能更好地了解自己的弱點,清晰考察的要點。
面試是一個交流的過程,千萬不能生搬硬套,要根據具體情況分析,提出合適的問題,比如從公司工作,團隊,客戶等工作相關的內容提出問題,那么就不會有太多的錯誤。
java開發從事B/S的后臺開發,面試技術點:
java基礎知識
java開發相關的框架,Spring、SpringMVC、Mybatis等,微服務SpringCloud、Dubbo等
非關系星數據庫redis,MongoDB等
svn/gid版本管理
技術面得差不多,主要就是看項目經驗了
1 項目經驗。你做過什么項目,項目流程和難點在哪,如何解決的。
2 框架知識。例如ssm框架主要工作原理,與傳統的servlet和jdbc相比他們有什么優點和缺點。
3 為人處事方面了。禮貌,謙遜,平和。
0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答