面8-15K可能會遇到的面試題
- 2020 年 3 月 31 日
- 筆記
點擊上方「框架師」,選擇「置頂公眾號」
我們一起學習進步!

正文

引言:
23號也就是周一約了3家面試,上午面了一家,下午面了一家,推掉了第三家的面試,下面說說面試內容,第一家共有6道筆試題,第二家無筆試題,面試官問了數據庫索引相關內容,以及目前所做的最新項目所使用的相關技術,下面就貼上昨天遇到的面試題,小夥伴們可以試着自己做一下,如果你答題很輕鬆,那麼我覺得你可以往8-12K方向去面試了,因為以下題目是來自兩家8-15K公司的面試內容,三年經驗;
- 第一題
class A { static { System.out.println("1"); } public A() { System.out.println("2"); } } class B extends A { static { System.out.println("A"); } public B() { System.out.println("B"); } } /** * 需求:請說出下面程序的運行結果 */ public class Demo1 { public static void main(String[] args) { A ab = new B(); ab = new B(); } }
- 第二題
/** * 第二題:編程填空 * 需求:下面程序實現將一整數逆序後放入一數組中,例如1234,變為{4,3,2,1} * 請在程序A,B,C中填入正確答案使程序運行結果正確 */ public class Demo2 { public static void main(String[] args) { int[] rs = new int[5]; revert(rs, 12345); // 12345 變為 {5,4,3,2,1} } static int revert(int[] rs, int number) { return revert(rs, A, number); } static int revert(int[] rs, int i, int number) { if (i < rs.length) { rs[i] = number % 10; number = B; return revert(rs, C, number); } else { return 0; } } }
- 第三題
/** * 需求:對於一個有序數組,在數組中查找指定元素,如果存在則輸出元素的位置, * 否則輸出-1,如:[1,3,5,7,9],5,返回的索引值是(2) * 請在A,B,C部分填空完成需求 */ public static int commonBinarySearch(int[] arr, int key) { int low = 0; int high = arr.length - 1; int middle = 0; if (key < arr[low] || key > arr[high] || low > high) { return -1; } while (low <= high) { middle = A; if (arr[middle] > key) { high = B; } else if (arr[middle] < key) { low = C; } else { return middle; } } return -1; }
- 第四題
/** * 需求:有N個人圍成一圈,按順序編號(1-N號),從1號開始報數(從1-3報數), * 凡報到3的人退出圈子,退出圈子的下一位重新從1開始報數,問最後留下來的是原來 * 第幾號; * 請在A,B,C,D處填空完成需求 */ public class Demo4 { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("請輸入總人數: "); int num = input.nextInt(); int[] arr = new int[num]; for (int i = 0; i < num; i++) { arr[i] = i + 1; } int index = 0; int sum = 0; while (A) { if (B) { C if (D) { sum = 0; arr[index] = 0; num--; } } index++; if (index == arr.length) { index = 0; } } for (int i = 0; i < arr.length; i++) { if (arr[i] == 1) { System.out.println("第" + (i + 1) + "留了下來"); } } } }
- 第五題(數據庫)
/** * 需求:數據庫中有一張表(Achievement),用於存儲學生的考試成績, * 它包含3個字段,姓名(name),課程名(course),分數(score),針對應用有三個業務規則: * a丶假設該校沒有重名的同學(沒有兩個名字叫一樣的同學); * b丶該表只存儲每個學生每個科目最新的考試成績(不存儲歷史考試成績); * c丶同一個學生可以學習多個課程; * * 需求一:如果需要給這個表,創建一個主鍵,請問會建在什麼列上? * * 需求二:請編寫SQL語句查詢出:有多少個學生有科目不及格(只需要返回一個數字即可); * * 需求三:請編寫SQL語句查詢出:有3科或者3科以上沒有及格的同學的名單; */
- 第六題(思考題)
/** * 有一個長度為10000的整數,請編寫程序把1-10000這一萬個數字填充到該數組 * * 需求一:1-10000這一萬個數字必須全部填充到數組中; * * 需求二:填充進去的數據系列,要比較隨機,不能有序或基本有序; */
- MySQL數據庫索引是什麼?缺點?優點?
/** * 索引的本質是什麼?索引有什麼優點,缺點是什麼? * 索引是幫助MySQL高效獲取數據的數據結構。因此,索引的本質是一種數據結構。 * 在數據之外,數據庫系統還可以維護滿足特定查找算法的數據結構,這些數據結構 * 以某種方式指向真實數據, * 這樣就可以在這些數據結構上實現高級查找算法,這種數據結構就是索引。 * * 優點: * 1、提高數據檢索效率,降低數據庫的IO成本; * 2、通過索引對數據進行排序,降低了數據排序的成本,降低了CPU的利用率; * * 缺點: * 1、索引實際上也是一張表,索引會佔用一定的存儲空間; * 2、更新數據表的數據時,需要同時維護索引表, * 因此,會降低insert、update、delete的速度; */
結語:面試結果還未知,但是第一家估計過不了,畢竟我還是知道自己什麼段位的,第二家聊的還算愉快,但是結果也是回去等通知