面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的速度;       */

結語:面試結果還未知,但是第一家估計過不了,畢竟我還是知道自己什麼段位的,第二家聊的還算愉快,但是結果也是回去等通知