Java 面試系列(一)

Java的Comparable與Comparator接口

Comparable接口下只有一個方法 int compareTo(T o) 用於提供排序所須要的比較邏輯。 實現這個接口的類,其對象均可以經過調用Collections.sort()或者Arrays.sort()進行排序html

Comparator是策略模式的一種實現,體現了將類和排序算法相分離的原則。java

Java中TreeMap和HashMap區別

HashMap:算法

  • 它是一個基於哈希表的實現。 它擴展了AbstractMap類並實現了Map接口。 HashMap基於散列原理工做。遍歷時,
  • 取得數據的順序是徹底隨機的,
  • 最多隻容許一條記錄的鍵爲Null;容許多條記錄的值爲 Null
  • 不支持線程的同步,若是須要同步,能夠用 Collections的synchronizedMap方法使HashMap具備同步能力,或者使用ConcurrentHashMap

TreeMap:實現SortMap接口,它根據其鍵的天然順序對其條目進行排序(升序),或者若是用戶在構造時提供,則更好地使用比較器spring

REST中get與post區別

GET: 從服務器獲取資源數據庫

  • GET請求標準上是冪等的(用戶應該認爲請求是安全的-資源不會被修改,這裏因此說應該是服務器端並不保證資源不會被修改)
  • GET請求能夠被瀏覽器緩存;響應也能夠被緩存(根據緩存頭信息來處理)
  • GET請求的數據都在URL中,能夠方便都從瀏覽器中獲取數據(所以不能攜帶諸如密碼的明文數據)
  • GET請求的長度會有限制(好比IE的路徑總長度需小於2048個字符)
  • GET請求的數據只能包含ASCII字符

POST: 發佈新資源瀏覽器

  • POST請求標準上不是冪等的(用戶應該認爲請求是有反作用的-可能會致使資源修改)
  • POST請求URL能夠被瀏覽器緩存,可是POST數據不會被緩存;響應能夠被緩存(根據緩存頭信息來處理)
  • POST請求沒有長度限制,能夠用來處理「請求數據」很大的場景(只要不超過服務器端的處理能力)
  • POST請求的數據不限於ASCII字符,能夠包含二進制數據

spring與springMVC區別

Spring,通常指代的是Spring Framework,它是一個開源的應用程序框架,提供了一個簡易的開發方式,經過這種開發方式,將避免那些可能導致代碼變得繁雜混亂的大量的業務/工具對象,說的更通俗一點就是由框架來幫你管理這些對象,包括它的建立,銷燬等,好比基於Spring的項目裏常常能看到的Bean,它表明的就是由Spring管轄的對象。緩存

Spring MVC是Spring的一部分,Spring 出來之後,你們以爲很好用,因而按照這種模式設計了一個 MVC框架(一些用Spring 解耦的組件),主要用於開發WEB應用和網絡接口,它是Spring的一個模塊,經過Dispatcher Servlet, ModelAndView 和 View Resolver,讓應用開發變得很容易安全

HBASE rowkey設計

hbase 中的行是以 rowkey 的字典序排序的,這種設計優化了scan 操做,能夠將相關的行以及會被一塊兒讀取的行存取在臨近位置,便於 scan服務器

rowkey是一個二進制碼流,rowkey的長度被不少開發者建議說設計在10~100個字節,不過建議是越短越好,不要超過16個字節(64Kb)網絡

rowkey 生成規則

  • 加鹽: 在rowkey 的前面增長隨機數。具體就是給 rowkey 分配一個隨機前綴 以使得它和以前排序不一樣。分配的前綴種類數量應該和你想使數據分散到不一樣的 region 的數量一致。

  • 哈希 哈希會使同一行永遠用同一個前綴加鹽。哈希也可使負載分散到整個集羣,可是讀倒是能夠預測的。使用肯定的哈希可讓客戶端重構完成的 rowkey,使用Get 操做獲取正常的獲取某一行數據。

  • 翻轉時間戳 一個常見的數據庫處理問題是快遞獲取數據的最近版本,使用翻轉的時間戳做爲rowkey的一部分對這個問題十分有用,能夠將Long.MAX_VALUE - timestamp追加到key的末尾,例如:[key][reverse_timestamp]

Hbase 過濾器

CompareFilter: 是高層的抽象類

RowFilter,FamliyFilter,QualifierFilter,ValueFilter: 行,列組,列,值等的過濾

SingleColumnValueFilter: 單值過濾器是以特定「列」的「值」爲過濾內容,值得是單列的值。而行值過濾器比較的是全部列的值。與其進行比較。

PrefixFilter: 前綴過濾器將會過濾掉不匹配的記錄,過濾的對象是主鍵的值。

Java8 Stream

Java 8 中的 Stream 是對集合(Collection)對象功能的加強,它專一於對集合進行各類便利、高效的聚合操做(aggregate operation),或者大批量數據操做 (bulk data operation),Stream 不是一種數據結構,並不保存數據。

中間轉換操做(節選)

  • map: 處理迭代過程當中的每一個元素,每一個輸入元素,都按照規則轉換成爲另一個元素
  • flatMap: 與map的區別在於能夠把多維集合壓平成另外一個Stream進行輸出
  • filter: 若是返回 true ,元素被留下進行後續操做
  • distinct: 去重
  • peek: 與 map 的不一樣在於其沒有返回值,能夠處理每一個元素,可是結果不會傳遞下去
相關文章
相關標籤/搜索