­

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

结语:面试结果还未知,但是第一家估计过不了,毕竟我还是知道自己什么段位的,第二家聊的还算愉快,但是结果也是回去等通知