面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的速度; */
结语:面试结果还未知,但是第一家估计过不了,毕竟我还是知道自己什么段位的,第二家聊的还算愉快,但是结果也是回去等通知