1. 程式人生 > >金三銀四:螞蟻金服JAVA後端面試題及答案之二面

金三銀四:螞蟻金服JAVA後端面試題及答案之二面

開發十年,就只剩下這套架構體系了! >>>   

一面參考這篇文章:螞蟻金服JAVA後端面試題及答案之一面

二面

22、你有什麼問題想問我的嗎?

1、自我介紹、工作經歷、技術棧

2、專案中你學到了什麼技術?

3、微服務劃分的粒度?

4、微服務的高可用怎麼保證的?

負載均衡與反向代理,隔離,限流,降級,超時與重試,回滾,壓力測試與應急預案

5、常用的負載均衡,該怎麼用,你能說下嗎?

1、http重定向

當http代理(比如瀏覽器)向web伺服器請求某個URL後,web伺服器可以通過http響應頭資訊中的Location標記來返回一個新的URL。這意味著HTTP代理需要繼續請求這個新的URL,完成自動跳轉。

2、DNS負載均衡

DNS 負責提供域名解析服務,當訪問某個站點時,實際上首先需要通過該站點域名的DNS伺服器來獲取域名指向的IP地址,在這一過程中,DNS伺服器完成了域名到IP地址的對映,同樣,這樣對映也可以是一對多的,這時候,DNS伺服器便充當了負載均衡排程器,它就像http重定向轉換策略一樣,將使用者的請求分散到多臺伺服器上,但是它的實現機制完全不同。

3、反向代理負載均衡

這個肯定大家都有所接觸,因為幾乎所有主流的Web伺服器都熱衷於支援基於反向代理的負載均衡。它的核心工作就是轉發HTTP請求。

相比前面的HTTP重定向和DNS解析,反向代理的排程器扮演的是使用者和實際伺服器中間人的角色:

1、任何對於實際伺服器的HTTP請求都必須經過排程器

2、排程器必須等待實際伺服器的HTTP響應,並將它反饋給使用者(前兩種方式不需要經過排程反饋,是實際伺服器直接傳送給使用者)

4、IP負載均衡(LVS-NAT)

因為反向代理伺服器工作在HTTP層,其本身的開銷就已經嚴重製約了可擴充套件性,從而也限制了它的效能極限。那能否在HTTP層面以下實現負載均衡呢?

NAT伺服器:它工作在傳輸層,它可以修改傳送來的IP資料包,將資料包的目標地址修改為實際伺服器地址

5、直接路由(LVS-DR)

NAT是工作在網路分層模型的傳輸層(第四層),而直接路由是工作在資料鏈路層(第二層),貌似更6些。它通過修改資料包的目標MAC地址(沒有修改目標IP),將資料包轉發到實際伺服器上,不同的是,實際伺服器的響應資料包將直接傳送給客戶羰,而不經過排程器

6、IP隧道(LVS-TUN)

基於IP隧道的請求轉發機制:將排程器收到的IP資料包封裝在一個新的IP資料包中,轉交給實際伺服器,然後實際伺服器的響應資料包可以直接到達使用者端。目前Linux大多支援,可以用LVS來實現,稱為LVS-TUN,與LVS-DR不同的是,實際伺服器可以和排程器不在同一個WANt網段,排程器通過 IP隧道技術來轉發請求到實際伺服器,所以實際伺服器也必須擁有合法的IP地址。

總體來說,LVS-DR和LVS-TUN都適合響應和請求不對稱的Web伺服器,如何從它們中做出選擇,取決於你的網路部署需要,因為LVS-TUN可以將實際伺服器根據需要部署在不同的地域,並且根據就近訪問的原則來轉移請求,所以有類似這種需求的,就應該選擇LVS-TUN。

6、閘道器能夠為後端服務帶來哪些好處?

後端伺服器可以專心處理業務請求,節省了大量連線管理的開銷

7、Spring Bean 的生命週期

8、xml 中配置的 init、destroy 方法怎麼可以做到呼叫具體的方法?

9、反射的機制

大家都知道,要讓Java程式能夠執行,那麼就得讓Java類要被Java虛擬機器載入。Java類如果不被Java虛擬機器載入,是不能正常執行的。現在我們執行的所有的程式都是在編譯期的時候就已經知道了你所需要的那個類的已經被載入了。

Java的反射機制是在編譯並不確定是哪個類被載入了,而是在程式執行的時候才載入、探知、自審。使用在編譯期並不知道的類。這樣的特點就是反射

反射機制通過void setAccessible(boolean flag)方法可以得到一個類的private的方法和屬性,使用這些private的方法和屬性

10、Object 類中的方法

1,建構函式

2,hashCode和equale函式用來判斷物件是否相同,

3,wait(),wait(long),wait(long,int),notify(),notifyAll()

4,toString()和getClass,

5,clone()

6,finalize()用於在垃圾回收

11、hashcode 和 equals 方法常用地方

12、物件比較是否相同

equals通常用來比較兩個物件的內容是否相等,==用來比較兩個物件的地址是否相等

13、hashmap put 方法存放的時候怎麼判斷是否是重複的

先比較key的hashCode,再比較相等或equals的,所以重寫hashCode()和equals()方法即可實現新增重複元素。

14、Object toString 方法常用的地方,為什麼要重寫該方法

常用在物件模型類

因為假如User是一個使用者的物件,如果User.toString();結果是不正常的,因為User物件中可能有多個屬性,如年齡,姓名等,這個toString後無法知道具體的是那個屬性轉換為字串

15、Set 和 List 區別?

Set(集):集合中的物件不按特定方式排序,並且沒有重複物件。它的有些實現類能對集合中的物件按特定方式排序。

List(列表):集合中的物件按索引位置排序,可以有重複物件,允許按照物件在集合中的索引位置檢索物件。

16、ArrayList 和 LinkedList 區別

ArrayList是實現了基於動態陣列的資料結構,LinkedList基於連結串列的資料結構

ArrayList 繼承AbstractList

LinkedList 繼承AbstractSequentialList

ArrayList 採用的是陣列形式來儲存物件的,這種方式將物件放在連續的位置中,所以最大的缺點就是插入刪除時非常麻煩

LinkedList 採用的將物件存放在獨立的空間中,而且在每個空間中還儲存下一個連結的索引 但是缺點就是查詢非常麻煩 要叢第一個索引開始

17、如果存取相同的資料,ArrayList 和 LinkedList 誰佔用空間更大?

對於隨機訪問get和set,ArrayList覺得優於LinkedList,因為LinkedList要移動指標

對於新增和刪除操作add和remove,LinedList比較佔優勢,因為ArrayList要移動資料,若要從陣列中刪除或插入某一個物件,需要移動後段的陣列元素,從而會重新調整索引順序,調整索引順序會消耗一定的時間,相反,LinkedList是使用連結串列實現的,若要從連結串列中刪除或插入某一個物件,只需要改變前後物件的引用即可

18、Set 存的順序是有序的嗎?

無序

Set是Map的一個馬甲,主要邏輯都交給Map實現

19、常見 Set 的實現有哪些?

HashSet

LinkedHashSet

TreeSet

20、TreeSet 對存入對資料有什麼要求呢?

TreeSet集合是用來物件元素進行排序的,同樣他也可以保證元素的唯一

21、HashSet 的底層實現呢?

22、TreeSet 底層原始碼有看過嗎?

TreeSet的底層實現是TreeMap

public TreeSet(Comparator<? super E> comparator) {

this(new TreeMap<>(comparator));

}

23、HashSet 是不是執行緒安全的?為什麼不是執行緒安全的?

說白了,HashSet就是限制了功能的HashMap,所以瞭解HashMap的實現原理

24、Java 中有哪些執行緒安全的 Map?

Concurrenthashmap

25、Concurrenthashmap 是怎麼做到執行緒安全的?

ConcurrentHashMap的大部分操作和HashMap是相同的,例如初始化,擴容和連結串列向紅黑樹的轉變等。但是,在ConcurrentHashMap中,大量使用了U.compareAndSwapXXX

的方法,這個方法是利用一個CAS演算法實現無鎖化的修改值的操作,他可以大大降低鎖代理的效能消耗。這個演算法的基本思想就是不斷地去比較當前記憶體中的變數值與你指定的

一個變數值是否相等,如果相等,則接受你指定的修改的值,否則拒絕你的操作。因為當前執行緒中的值已經不是最新的值,你的修改很可能會覆蓋掉其他執行緒修改的結果。這一

點與樂觀鎖,SVN的思想是比較類似的。

同時,在ConcurrentHashMap中還定義了三個原子操作,用於對指定位置的節點進行操作。這三種原子操作被廣泛的使用在ConcurrentHashMap的get和put等方法中,

正是這些原子操作保證了ConcurrentHashMap的執行緒安全。

在ConcurrentHashMap沒有出現以前,jdk使用hashtable來實現執行緒安全,但是hashtable是將整個hash表鎖住,所以效率很低下。

ConcurrentHashMap將資料分別放到多個Segment中,預設16個,每一個Segment中又包含了多個HashEntry列表陣列,

對於一個key,需要經過三次hash操作,才能最終定位這個元素的位置,這三次hash分別為:

對於一個key,先進行一次hash操作,得到hash值h1,也即h1 = hash1(key);

將得到的h1的高几位進行第二次hash,得到hash值h2,也即h2 = hash2(h1高几位),通過h2能夠確定該元素的放在哪個Segment;

將得到的h1進行第三次hash,得到hash值h3,也即h3 = hash3(h1),通過h3能夠確定該元素放置在哪個HashEntry。

每一個Segment都擁有一個鎖,當進行寫操作時,只需要鎖定一個Segment,而其它Segment中的資料是可以訪問的。

26、HashTable 你瞭解過嗎?

Hashtable既不支援Null key也不支援Null value。Hashtable的put()方法的註釋中有說明

Hashtable是執行緒安全的,

Hashtable是執行緒安全的,它的每個方法中都加入了Synchronize方法,效率比較低

Hashtable預設的初始大小為11,之後每次擴充,容量變為原來的2n+1。

Hashtable在計算元素的位置時需要進行一次除法運算,而除法運算是比較耗時的。

27、如何保證執行緒安全問題?

28、synchronized、lock

synchronized是java中的一個關鍵字,也就是說是Java語言內建的特性

如果一個程式碼塊被synchronized修飾了,當一個執行緒獲取了對應的鎖,並執行該程式碼塊時,其他執行緒便只能一直等待,等待獲取鎖的執行緒釋放鎖,而這裡獲取鎖的執行緒釋放鎖只會有兩種情況:

1)獲取鎖的執行緒執行完了該程式碼塊,然後執行緒釋放對鎖的佔有;

2)執行緒執行發生異常,此時JVM會讓執行緒自動釋放鎖

那麼如果這個獲取鎖的執行緒由於要等待IO或者其他原因(比如呼叫sleep方法)被阻塞了,但是又沒有釋放鎖,其他執行緒便只能乾巴巴地等待,試想一下,這多麼影響程式執行效率。

因此就需要有一種機制可以不讓等待的執行緒一直無期限地等待下去(比如只等待一定的時間或者能夠響應中斷),通過Lock就可以辦到

再舉個例子:當有多個執行緒讀寫檔案時,讀操作和寫操作會發生衝突現象,寫操作和寫操作會發生衝突現象,但是讀操作和讀操作不會發生衝突現象。

但是採用synchronized關鍵字來實現同步的話,就會導致一個問題:

如果多個執行緒都只是進行讀操作,所以當一個執行緒在進行讀操作時,其他執行緒只能等待無法進行讀操作。

因此就需要一種機制來使得多個執行緒都只是進行讀操作時,執行緒之間不會發生衝突,通過Lock就可以辦到。

另外,通過Lock可以知道執行緒有沒有成功獲取到鎖。這個是synchronized無法辦到的

29、volatile 的原子性問題?為什麼 i++ 這種不支援原子性?從計算機原理的設計來講下不能保證原子性的原因

30、happens before 原理

31、cas 操作

java.util.concurrent包中藉助CAS實現了區別於synchronized同步鎖的一種樂觀鎖

cas是比較並交換演算法

CAS有3個運算元,記憶體值V,舊的預期值A,要修改的新值B。當且僅當預期值A和記憶體值V相同時,將記憶體值V修改為B,否則什麼都不做

JDK提供了AtomicReference類來保證引用物件之間的原子性,就可以把多個變數放在一個物件裡來進行CAS操作。

32、lock 和 synchronized 的區別?

1)Lock是一個介面,而synchronized是Java中的關鍵字,synchronized是內建的語言實現;

2)synchronized在發生異常時,會自動釋放執行緒佔有的鎖,因此不會導致死鎖現象發生;而Lock在發生異常時,如果沒有主動通過unLock()去釋放鎖,則很可能造成死鎖現象,因此使用Lock時需要在finally塊中釋放鎖;

3)Lock可以讓等待鎖的執行緒響應中斷,而synchronized卻不行,使用synchronized時,等待的執行緒會一直等待下去,不能夠響應中斷;

4)通過Lock可以知道有沒有成功獲取鎖,而synchronized卻無法辦到。

5)Lock可以提高多個執行緒進行讀操作的效率。

在效能上來說,如果競爭資源不激烈,兩者的效能是差不多的,而當競爭資源非常激烈時(即有大量執行緒同時競爭),此時Lock的效能要遠遠優於synchronized。所以說,在具體使用時要根據適當情況選擇。

類別

synchronized

Lock

存在層次

Java的關鍵字,在jvm層面上

是一個類

鎖的釋放

1、以獲取鎖的執行緒執行完同步程式碼,釋放鎖 2、執行緒執行發生異常,jvm會讓執行緒釋放鎖

在finally中必須釋放鎖,不然容易造成執行緒死鎖

鎖的獲取

假設A執行緒獲得鎖,B執行緒等待。如果A執行緒阻塞,B執行緒會一直等待

分情況而定,Lock有多個鎖獲取的方式,具體下面會說道,大致就是可以嘗試獲得鎖,執行緒可以不用一直等待

鎖狀態

無法判斷

可以判斷

鎖型別

可重入 不可中斷 非公平

可重入 可判斷 可公平(兩者皆可)

效能

少量同步

大量同步

33、公平鎖和非公平鎖

公平和非公平鎖的佇列都基於鎖內部維護的一個雙向連結串列,表結點Node的值就是每一個請求當前鎖的執行緒。公平鎖則在於每次都是依次從隊首取值

非公平鎖在等待鎖的過程中, 如果有任意新的執行緒妄圖獲取鎖,都是有很大的機率直接獲取到鎖的

(在ReentrantLock中很明顯可以看到其中同步包括兩種,分別是公平的FairSync和非公平的NonfairSync。公平鎖的作用就是嚴格按照執行緒啟動的順序來執行的,不允許其他執行緒插隊執行的;而非公平鎖是允許插隊的。

預設情況下ReentrantLock是通過非公平鎖來進行同步的,包括synchronized關鍵字都是如此,因為這樣效能會更好。因為從執行緒進入了RUNNABLE狀態,可以執行開始,到實際執行緒執行是要比較久的時間的。而且,在一個鎖釋放之後,其他的執行緒會需要重新來獲取鎖。其中經歷了持有鎖的執行緒釋放鎖,其他執行緒從掛起恢復到RUNNABLE狀態,其他執行緒請求鎖,獲得鎖,執行緒執行,這一系列步驟。如果這個時候,存在一個執行緒直接請求鎖,可能就避開掛起到恢復RUNNABLE狀態的這段消耗,所以效能更優化)

34、Java 讀寫鎖

35、讀寫鎖設計主要解決什麼問題?

多執行緒,

讀操作可以共享,寫操作是排他的,讀可以有多個在讀,寫只有唯一個在寫,同時寫的時候不允許讀

解決了讀和讀可以同時進行,讀和寫不能同時進行,寫和寫不能同時進行

36、你專案除了寫 Java 程式碼,還有前端程式碼,那你知道前端有哪些框架嗎?

Vue layer react element

37、MySQL 分頁查詢語句

LIMIT [offset,] rows

offset指定要返回的第一行的偏移量,rows第二個指定返回行的最大數目

38、MySQL 事務特性和隔離級別

一、事務的基本要素(ACID)

1、原子性(Atomicity):事務開始後所有操作,要麼全部做完,要麼全部不做,不可能停滯在中間環節。事務執行過程中出錯,會回滾到事務開始前的狀態,所有的操作就像沒有發生一樣。也就是說事務是一個不可分割的整體,就像化學中學過的原子,是物質構成的基本單位。

2、一致性(Consistency):事務開始前和結束後,資料庫的完整性約束沒有被破壞 。比如A向B轉賬,不可能A扣了錢,B卻沒收到。

3、隔離性(Isolation):同一時間,只允許一個事務請求同一資料,不同的事務之間彼此沒有任何干擾。比如A正在從一張銀行卡中取錢,在A取錢的過程結束前,B不能向這張卡轉賬。

4、永續性(Durability):事務完成後,事務對資料庫的所有更新將被儲存到資料庫,不能回滾。

二、事務的併發問題

1、髒讀:事務A讀取了事務B更新的資料,然後B回滾操作,那麼A讀取到的資料是髒資料

2、不可重複讀:事務 A 多次讀取同一資料,事務 B 在事務A多次讀取的過程中,對資料作了更新並提交,導致事務A多次讀取同一資料時,結果 不一致。

3、幻讀:系統管理員A將資料庫中所有學生的成績從具體分數改為ABCDE等級,但是系統管理員B就在這個時候插入了一條具體分數的記錄,當系統管理員A改結束後發現還有一條記錄沒有改過來,就好像發生了幻覺一樣,這就叫幻讀。

MySQL事務隔離級別

事務隔離級別

髒讀

不可重複讀

幻讀

讀未提交(read-uncommitted)

不可重複讀(read-committed)

可重複讀(repeatable-read)

序列化(serializable)

39、不可重複讀會出現在什麼場景?

40、sql having 的使用場景

如果需要對組函式的結果作為條件,那麼不能使用where子句,必須使用having子句

41、前端瀏覽器地址的一個 http 請求到後端整個流程是怎麼樣?

能夠說下嗎?

域名解析 --> 發起TCP的3次握手 --> 建立TCP連線後發起http請求 -->伺服器響應http請求,瀏覽器得到html程式碼 -->瀏覽器解析html程式碼,並請求html程式碼中的資源(如js、css、圖片等) --> 瀏覽器對頁面進行渲染呈現給使用者

42、http 預設埠,https 預設埠

HTTP協議代理伺服器常用埠號:80/8080/3128/8081/9080

HTTPS伺服器,預設的埠號為443/tcp 443/udp

43、DNS 你知道是幹嘛的嗎?

DNS是指:域名伺服器(Domain Name Server)。在Internet上域名與IP地址之間是一一對應的,域名雖然便於人們記憶,但機器之間只能互相認識IP地址,它們之間的轉換工作稱為域名解析,域名解析需要由專門的域名解析伺服器來完成,DNS就是進行域名解析的伺服器

44、你們開發用的 ide 是啥?你能說下 idea 的常用幾個快捷鍵吧?

45、程式碼版本管理你們用的是啥?

46、git rebase 和 merge 有什麼區別?

47、你們公司加班多嗎?

一面參考這篇文章:螞蟻金服JAVA後端面試題及答案之一面

歡迎工作一到五年的Java工程師朋友們加入Java高階架構:867581223

群內提供免費的Java架構學習資料(裡面有高可用、高併發、高效能及分散式、Jvm效能調優、Spring原始碼,

MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)

合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!

相關推薦

螞蟻JAVA端面試題答案

開發十年,就只剩下這套架構體系了! >>>   

螞蟻JAVA開發試題答案一面(持續更新)

開發十年,就只剩下這套架構體系了! >>>   

即將到來的,這10道springboot常見面試題你需要了解下

org glassfish 到來 開發人員 ava server ron 有助於 use 1.什麽是Spring Boot? 多年來,隨著新功能的增加,spring變得越來越復雜。只需訪問https://spring.io/projects頁面,我們就會看到可以在我們的應用

Java面試通關要點匯總集(大牛歸納)

Java 面試 Java面試通關要點匯總集(部分解答)說明如果你有幸能看到的話, 1、本文整體框架來自@阿裏.梁桂釗的博文,總結的非常不錯。值得我們學習,它的博客部分做了解答。2、由於自己能力有限,沒能實現心中那個想法,就是第一遍自己寫,第二遍書本查詢3、文章會放到GitHub,用Git控制。可能是一

Java面試前的準備。

AI load java基礎 樂觀鎖 map req java的反射機制 反射 多例 感謝您參加我們的面試:   以下是我們總結一些面試前準備和技術參考題,希望對你有所幫助。   首先,你需要先準備下工作相關的自我介紹,包括以下內容:   1.幾年Java開發經驗,大概概括

跳槽季,你拿到心目中的Offer了嗎?你薪水升上去了嗎?

java 分布式 面試 程序員 後端 簡歷怎麽投? 有工作經驗的人。一般情況下有工作經驗的人,技術也有了,人脈也有了。那麽我們找工作的時候,可以依靠這些人脈。正所謂,出了學校,進了社會,你的技能不是最重要的,人脈才是。所以你可以先去打聽打聽你的那些朋友,或者認識的一些技術大V有沒有工作介紹

Java高級程序員面試大綱——備戰跳槽季

協作能力 開發經驗 都沒有 信號燈 text 異常 array 程序員面試 finall 跳槽時時刻刻都在發生,但是我建議大家跳槽之前,先想清楚為什麽要跳槽。切不可跟風,看到同事一個個都走了,自己也盲目的開始面試起來(期間也沒有準備充分),到底是因為技術原因(影響自己的發展

跳槽季,Java面試大綱答案

本文轉載自https://blog.csdn.net/weixin_37509652/article/details/79701679 I made a slight modification. 跳槽時時刻刻都在發生,但是我建議大家跳槽之前,先想清楚為什麼要跳槽。切不可跟風,看到同事一個

Java高階程式設計師面試大綱——備戰跳槽季

跳槽時時刻刻都在發生,但是我建議大家跳槽之前,先想清楚為什麼要跳槽。切不可跟風,看到同事一個個都走了,自己也盲目的開始面試起來(期間也沒有準備充分),到底是因為技術原因(影響自己的發展,偏移自己規劃的軌跡),還是錢給少了,不受重視。 準備不充分的面試,完全是浪費時間,更是對

Java程式設計師面試大綱—錯過了,你還要錯過2018嗎

跳槽時時刻刻都在發生,但是我建議大家跳槽之前,先想清楚為什麼要跳槽。切不可跟風,看到同事一個個都走了,自己也盲目的開始面試起來(期間也沒有準備充分),到底是因為技術原因(影響自己的發展,偏移自己規劃的軌跡),還是錢給少了,不受重視。 準備不充分的面試,完全是浪費時間,更是對

Java程式設計師求職季,這些多執行緒試題你會嗎?

  多執行緒是Java技術面試中面試官比較喜歡問的問題之一。在這裡,從面試的角度列出了大部分重要的問題,但是作為一個程式設計師仍然應該牢固的掌握Java多執行緒基礎知識來對應日後碰到的問題。 1. 程序和執行緒之間有什麼不同? 一個程序是一個獨立(self contain

跳槽季,Java面試大綱

點選上方“程式設計師小灰”,選擇“置頂公眾號”有趣有內涵的文章第一時間送達!本文轉載自公眾號 

2018,Android大廠試題整理

目錄 (1)java面試題 (2)Android面試題 (3)高階技術面試題 (4)非技術性問題&HR問題彙總 java面試題 熟練掌握java是很關鍵的,大公司不僅僅要求你會使用幾個api,更多的是要你熟悉原始碼實現原理,甚至要你知道有哪些不

跳槽季,上週剛面試回來的面試總結,想進BAT必看

上週陪同之前一起工作的同事去面試(喬治,小袁,鵬飛(面試人)),第一站是去深圳,第二站上海,第三

跳槽季()Redis

1、什麼是Redis? Redis是一種key-value形式的NoSQL記憶體資料庫,由ANSIC編寫,遵守BSD協議、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。 Redis最大的特性是它會將

如何找工作?阿里、京東、美團內推題送給還在迷茫的朋友

從事Java開發工作十二年總結 跳槽,對IT人來說絕對不是個陌生的詞彙,幾乎所有人都身體力行過。首先我要強調一點,跳槽並沒有壞處,但是頻繁的跳槽就不好了。在工作的前4年,必須跳槽,而且鼓勵跳槽(建議經歷2—3家公司);每個公司對技術的側重點都不同,對開發流程控

,三月已經過去,馬上畢業

哎,大大的嘆息…… 到底什麼工作才是一個正確的選擇呢? 目前想換工作,但是目前這個公司拽著、畢設也拽著、只有這個四月份卻哪兒也去不了, 五月份也有各種事兒,6月份回去準備畢業事宜。哎,馬丹爭取五月份

,你可以行動了

android 加班 聯網 後臺 讀者 推薦閱讀 職業規劃 關註 art 為什麽會離職 又要交房租了,工資怎麽還不發?每個月總覺得錢不夠花,工資總是跟不上消費,什麽時候能漲個工資呢? 現在上班猶如上墳一樣,已經找不到半點成就感,每天各種煩心事,各種瑣事永遠做不到。 我們為什

【備戰Java程式設計師面試題彙總,直擊BATJ

浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>   

記阿里巴巴的一次面試,教你怎樣應對到來的“”!

浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>