由於本人馬上要電面招銀網絡,所以從牛客、CSDN各個網站總結的招銀面經問題(java開發/測試):
牛客最新面經:
2018年9月
第一個
1、機試做錯的題可能會問
2、final的用法:可以用於三個地方,修飾類、類屬性和類方法。被final修飾的類不能被繼承,被final關鍵字修飾的類屬性和方法不能被覆蓋(重寫)
3、循環單詞的比較,形如abcd,bcda,cdab
4、有序隊列的合併:用歸併算法。
5、10000個數取前10個:堆排序構建堆過程
6、排序算法
7、基本數據類型:int、byte、short、long、、char、float、double、boolean
8、string和int轉換:
9、類加載機制
10、線程同步、sychoronize和lock區別:sychoronize是一個修飾符,lock是接口
11、建索引的語句
12、大表查詢優化
13、數據庫連接:左連接右連接等
14、js數據類型:字符串、數字、布爾、數組、對象、Null、Undefined
15、spring權限控制:基於Spring AOP實現的數據權限。
16、springmvc請求流程
java崗位:
1、介紹項目
2、求最大子序列
3、加權二叉樹
4、數據庫
數據開發崗
1、msql怎麼實現查找第100-200條數據
2、窗口函數中rank() dense_rank() 區別
3、mysql有哪些索引類型、有哪些鎖
4、如果數據很多,又要保留很久,怎麼在底層設計mysql
5、java堆和棧區別
6、什麼時候GC
7、常見的包
8、數據庫連接池怎麼實現
9、JavaScript瞭解嗎
測試開發崗
1自我介紹
2數據庫視圖
3數據庫索引
4主鍵
5CS和BS架構的區別和優缺點
6 鏈表和數組區別,優缺點
7 數據庫原子性
測開崗第二個
1、數據庫中視圖和遊標的區別
視圖是一種虛擬的表,具有和物理表相同的功能。可以對視圖進行增,改,查,操作,視圖通常是有一個表或者多個表的行或列的子集。對視圖的修改不影響基本表。它使得我們獲取數據更容易,相比多表查詢。
遊標:是對查詢出來的結果集作爲一個單元來有效的處理。遊標可以定在該單元中的特定行,從結果集的當前行檢索一行或多行。可以對結果集當前行做修改。一般不使用遊標,但是需要逐條處理數據的時候,遊標顯得十分重要。
2、數據庫中的幾種聯接方式,全連接
3、數據庫的存儲過程:實際上是預編譯的sql過程。
4、數據庫中事務的隔離級別
5、CS和BS架構區別,優缺點;
6、Linux中常用的命令
7、常用數據庫有哪些?
網絡、Http、html
cookie和session區別
session是web程序中常用的技術,用來跟蹤用戶的整個會話。常用的會話跟蹤就是以上這兩個,Cookie通過在客戶端記錄信息確定用戶身份,Session通過在服務器端記錄信息確定用戶身份。
-------------------------------------------------------------------華麗分割線---------------------------------------------------------------------------
1、談談對jvm的理解
個人見解:jvm是java的核心和基礎,是在java編譯器和os平臺之間的虛擬處理器。即java編譯器只需要將源碼編譯成jvm能理解的代碼或者字節碼即可,至於和os平臺之間,就是jvm需要做的事情了。通過這個環境可以很好的實現跨平臺的特性。
舉個小例子就是在javac編譯時會生成.class文件。這些class文件是通過java編譯器實現的,最後交由jvm來解析。
jvm類加載過程:加載、驗證、準備、解析、初始化、使用、卸載。
2、java程序初始化順序
在一個java程序中,有類、成員、構造函數、代碼塊、方法等。
他們的順序基本爲:靜態優於非靜態、成員變量優於方法和塊、父類優於子類。
總結起來爲:父類靜態變量-->父類靜態塊-->子類靜態變量--->子類靜態塊--->父類非靜態變量-->父類非靜態塊-->父類構造方法-->子類非靜態變量-->子類非靜態塊--->子類構造方法
3、線程的創建:
三種方式:A繼承Thread類,重寫該類的run方法,創建Thread子類的實例,調用線程對象start啓動線程
B實現Runnable接口,重寫該類的run方法,以此實例創建線程對象,調用start方法啓動線程
C通過callable和Future創建線程,實現call方法
時間允許的話,分析一下三者的優劣
4、mysql主鍵和唯一索引的區別
唯一索引用UNIQE定義,保證數據記錄的唯一性。
主鍵是一種特殊的唯一索引,用來標識唯一一條數據,用Primary Key創建。
5、如何實現session共享,用redis如何實現
通常情況下,tomcat、jetty等servlet容器會默認將session存在內存中,但是這個不利於擴展。Redis 是一個key-value數據庫,可以將session統一存在redis中進行管理。如果項目是基於spring框架開發的,只需要對項目進行配置即可。主要配置項:maven依賴、filter配置、spring配置文件。
6、說說微服務
微服務就是爲了解決一個業務系統太大~太繁瑣~太笨重~太複雜,我們把業務系統拆分成了多個獨立的小應用去開發。在多個小應用之間就可以通過服務完成溝通。每一個小應用都可以獨立完成一個業務,同時還可以把自己的服務給其他的應用去消費。
-------------------------------------------------------------------華麗分割線---------------------------------------------------------------------------
另一個博客:
java基本知識:
1、接口和抽象類的區別。
從兩方面分析,語法方面的區別和設計層面的區別。
2、重載重寫
重載時有幾個不同,方法重載時參數名稱不同,類型不同,參數個數不同即可構成重載。
重寫常常被用於繼承。比如說按map的value進行比較,需要重寫compare方法。
3、控制反轉和依賴注入:
這是一設計思想。IOC意味着將設計好的對象交給容器控制管理,而不是傳統的在你對象內部的直接控制。很好體現了面向對象,由IoC容器幫對象找相應的依賴對象並注入。
誰依賴誰?爲什麼需要依賴?誰注入誰?注入了什麼?
可以用找女朋友的例子打比方。通過婚介所找對象就是IoC。把創建對象的事情都交個spring,由他統一管理。
4、依賴注入的幾種方式,
A、setter方法注入
B、構造器注入
C、接口注入
-------------------------------------------------------------------華麗分割線---------------------------------------------------------------------------
第三個博客:17年9月
分爲兩個部分:
Part1:介紹項目
Part2:問題:
1、說下進程與線程的區別
進程:CPU進行資源分配和管理的最小單位
線程:CPU進行調度的最小單位。
進程擁有一個完整的虛擬地址空間,不依賴於線程而獨立存在;反之,線程是進程的一部分,沒有自己的地址空間,與進程內的其他線程一起共享分配給該進程的所有資源。
2、說說JVM
JVM是java比較核心的東西,它實際上就是建立了一個虛擬環境,使得os與java編譯器之間能夠相互進行交流。主要包括內存模型、垃圾回收機制類加載機制
內存模型主要是堆區和棧區、程序計數器、方法區。
垃圾回收:垃圾的定義:引用計數和可達性分析。垃圾回收的方法有標記-清楚算法、複製算法、標記整理、分代收集。
3、說說線程創建的方式
三種
4、說說集合類框架
collection和map。及其下的實現類。
5、spring框架
-------------------------------------------------------------------華麗分割線---------------------------------------------------------------------------
第四個:應該是現場面試
1、主要用什麼語言開發?Java
關於C、C++的問題:C語言的單鏈表和雙向鏈表有什麼區別?
跳躍表有沒有聽說過?自然是不知道
java有內存回收的機制,C沒有,知道什麼時候會出現野指針,什麼時候會出現內存泄露嗎?
有用過什麼數據結構?寫過簡單的反轉鏈表、兩個棧實現隊列,
二叉樹的遍歷有哪幾種?前序中序後序
-------------------------------------------------------------------華麗分割線---------------------------------------------------------------------------
16年9月面經
1、講項目
2、瀑布模型的幾個階段
3、如何實現環形隊列
4、內連接和外連接及交叉連接。
-------------------------------------------------------------------華麗分割線---------------------------------------------------------------------------
2018年9月
1、數據庫連接的方式?
方法一是java原生的jdbc ;方法二是利用properties。配置文件的形式利用java原生的jdbc進行連接;方法三是利用c3p0-config.xml配置文件形式,利用c3p0配置文件設置連接池進行連接;方法四利用dbcp.properties配置文件形式;方法5利用mybatis-config.xml配置文件形式;方法6利用hibernate.cfg.xml配置文件形式
2、用什麼數據結構去存數據庫連接池?
預先在緩衝池中放入一定數量的連接。用隊列的形式存儲連接池。。java中可以用Vector、Stack
-------------------------------------------------------------------華麗分割線---------------------------------------------------------------------------
2016年9月
1、在java中進行數據庫連接並操作數據的?最後需要進行什麼操作?
2、項目中使用jquery,那麼on、bind、live、delegate這幾個函數有什麼區別?
3、一個http請求所包含的數據格式是什麼?
請求行+請求頭+數據體
4、一次http請求的詳細處理過程?
三次握手1建立TCP連接 2Web瀏覽器向web服務器發送請求命令 3web瀏覽器發送請求頭信息 4web服務器應答 5web服務器發應答頭信息。6發送實際數據。 7web服務器關閉TCP連接
5、一次struts處理請求從開始到看到頁面數據之間都發生了什麼,整個詳細過程?
6、項目中都用到了什麼框架?(spring+spring mvc+mybatis)
7、在自己的項目中有沒有用到併發?如果讓你現在考慮給你的項目中考慮併發你會怎麼做?你要控制(進行同步)的數據源是哪些?
-------------------------------------------------------------------華麗分割線---------------------------------------------------------------------------
未完。。