個人遇到的java面試題二

個人總結面試:大公司面試注重基礎、原理、深度以及你的邏輯思維;小公司注重過來能做項目、能幹活就行。所以你要去面試看一下你去面試公司的規模適當準備一下你的知識


1、spring的用到的設計模式有哪些?

百度一下一堆回答,不做解釋,在這裏我想說的是你在意過這些東西嗎?反正我是沒注意過這些設計模式的應用,嗚嗚嗚~

2、mybatis的傳參方式有幾種?

這裏我想說的是從兩個方面回答:

1)傳參方式:

a.多個參數

dao.java

public User selectUser(String id, String name);

mapper.xml

<select id="selectUser">

 select * from t_user where id = #{0} and name = #{1}

</select>

 #{0} 代表的是第一個參數,#{1} 代表的是第二個參數,以此類推

b.參數名稱(註解聲明參數名稱)

dao.java

public User selectUser(@Param(value="id") String id, @Param(value="name") String name);

mapper.xml

<select id="selectUser">

 select * from t_user where id = #{id} and name = #{name}

</select>

c.map形式

dao.java

public User selectUser(Map param);

mapper.xml

<select id="selectUser">

 select * from t_user where id = #{id} and name = #{name} 對應map中的key

</select>

2)取值方式:#{} 和 ${}區別,#{}是佔位符select * from t_user where id = ? 這樣的;${}直接替換對應位置的值select * from t_user where id = 1

3、dubbo框架用的是什麼協議?

我個人回答的是socket(tcp協議),但是面試官說tcp和http協議都可以,我們在這裏不糾結這個問題。我們說一下dubbo的原理,dubbo的原理是socket通信,客戶端傳遞我們的參數(接口名稱-我們要調用哪個接口;方法名稱-我們要調用哪個方法;參數類型-我們要調用方法的參數類型;具體的參數值-我們傳遞的參數值),服務端通過反射去調取的相應的接口,相應的方法最後得到返回值返回給客戶端。我們稱這種叫RPC(遠程調用)

4、集合ArrayList的初始化大小以及增長倍數?

ArrayList的初始化大小爲10個長度的數組。增長速度是當前數組長度的一半,比如list維護的數組大小是10,我們增加第11個元素時,這時候會搞一個長度爲(10 + 10 /2)的數組,將原數組copy進來,然後放置新元素。具體源碼分析,大家可以去看我的集合ArrayList集合分析。https://blog.csdn.net/zhao_xinhu/article/details/82712002

5、LinkList是怎樣一種結構?你是怎麼理解的?

java中的LinkList維護的是一個雙鏈表的Node節點,node節點中有item(自身值),node prev(前節點),node next(後節點),具體自行看java源碼,個人博客中也有LinkList的源碼分析https://blog.csdn.net/zhao_xinhu/article/details/82713574

6、既然說到了ArrayList和LinkList了,那我們來說一下Map集合的理解?

map首先是數組和鏈表的組合。數組是16長度的數組,通過分析key的hashCode和equals方法來判斷是否相同來放置key的,如果遇到key相同的,會替換原來的value值。具體查看個人博客https://blog.csdn.net/zhao_xinhu/article/details/82740652

7、 spring-aop運用到哪些地方?

spring的事務控制(這是spring自己的東西,其實不能算是我們自己對aop的運用),日誌的插入,其他的我就不知道了,哈哈哈

8、聊聊你對協議的理解?說說你對http協議的理解?

http協議首先是基於tcp/ip協議的,http協議會有http請求頭(放置的是請求方的ip和被請求方的ip)和請求體(具體的內容),整個http協議是放在tcp協議的請求體中的,tcp協議也有自己的請求頭(請求方的mac地址和被請求方的mac地址)和請求體(具體的內容),找到具體的服務器,處理請求進行返回

9、你接觸的權限框架有哪些?你對權限的理解?

我接觸的權限框架有shiro,別的就沒了。我對權限的理解是:哪些是你可以操作的,哪些是不能操作的;哪些是可見的,哪些是不可見的等等。當然具體的話可能具體到頁面上的按鈕你是否可操作,服務器中的圖片你是否可以訪問等等。

接着問:那如果讓你來設計權限相關的表你會怎麼來設計?具體有哪些表?

首先會有一個用戶表,只有有了用戶纔有意義;其次可能有一個用戶對應的角色表(一個用戶對應了什麼角色);然後角色對應的權限表(權限表裏面可能就比較多的內容了,具體到按鈕是否可見啊,是否可點擊啊等等),我覺得這個可能面試官是看一下你的邏輯分析能力的

10、老生常談的東西了String和StringBuilder以及StringBuffer區別?

11、線程安全你是怎樣理解的?爲什麼會有出現線程不安全?

線程安全就是同一時間我們只允許一個線程來操作對象或是變量這樣我們就保證了線程的安全性。因此線程不安全就是因爲多個線程同時操作了一個對象,後來者將前一個修改的內容改變了,所以達到了不安全的過程


大概能記住的就這些了,隨後想起來了或是在面試中遇到的再補充吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章