点击上方“框架师”,选择“置顶公众号”
我们一起学习进步!
正文
引言:
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高效获取数据的数据结构。因此,索引的本质是一种数据结构。
* 在数据之外,数据库系统还可以维护满足特定查找算法的数据结构,这些数据结构
* 以某种方式指向真实数据,
* 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。
*
* 优点:
* 1、提高数据检索效率,降低数据库的IO成本;
* 2、通过索引对数据进行排序,降低了数据排序的成本,降低了CPU的利用率;
*
* 缺点:
* 1、索引实际上也是一张表,索引会占用一定的存储空间;
* 2、更新数据表的数据时,需要同时维护索引表,
* 因此,会降低insert、update、delete的速度;
*/
结语:面试结果还未知,但是第一家估计过不了,毕竟我还是知道自己什么段位的,第二家聊的还算愉快,但是结果也是回去等通知