2018的美团面试客观题就得了28分。。。_二分查找

啥也不会 糟透了


文章目录


封锁协议


  • 一级封锁协议需要在修改数据时进行加锁,而读数据时不会进行加锁,所以不能保证可重复读和不读脏数据。
  • 二级封锁协议在读取数据前进行加锁,读完后解锁,防止了丢失修改可以保证不会脏读但不能保证可重复读。
  • 三级封锁协议在读数据时进行加锁,直到事务结束才解锁,保证不会脏读和可重复读。

数据库ER图

这既然都考 我也是真不会


  • ER图的实体(entity)即数据模型中的数据对象,例如人、学生、音乐都可以作为一个数据对象,用长方体来表示,每个实体都有自己的实体成员(entity member)或者说实体对象(entity instance),例如学生实体里包括张三、李四等,实体成员(entity member)/实体实例(entity instance) 不需要出现在ER图中。
  • ER图的属性(attribute)即数据对象所具有的属性,例如学生具有姓名、学号、年级等属性,用椭圆形表示,属性分为唯一属性( unique attribute)和非唯一属性,唯一属性指的是唯一可用来标识该实体实例或者成员的属性,用下划线表示,一般来讲实体都至少有一个唯一属性。
  • ER图的关系(relationship)用来表现数据对象与数据对象之间的联系,例如学生的实体和成绩表的实体之间有一定的联系,每个学生都有自己的成绩表,这就是一种关系,关系用菱形来表示。

有效的存取时间

2018的美团面试客观题就得了28分。。。_加锁_02

CSMA/CD协议

计网没复习早忘了 哭唧唧

2018的美团面试客观题就得了28分。。。_数据_03

二叉排序树

很不喜欢这个平台 也不知道为什么 这些大厂都用这个平台笔试

2018的美团面试客观题就得了28分。。。_数据_04

压缩存储 对称矩阵

2018的美团面试客观题就得了28分。。。_二分查找_05

2018的美团面试客观题就得了28分。。。_加锁_06


作者:pwrliang


第一题推地址是这样的,因为对阵矩阵可以只存一半,存下三角(左下角)。当时没看懂题a22是啥意思,现在才反应过来是行列号……应该把22用下角标表示啊。。。于是乎瞎懵了一个,可惜了



行列 地址
22 1
31 2
32 3
33 4
41 5
42 6
43 7
44 8
51 9
52 10
53 11
54 12
55 13
61 14
62 15
63 16
64 17
65 18
66 19
71 20
72 21
73 22
74 23


二分查找

二分查找我都忘了 我服了我自己

状态太不好了我

2018的美团面试客观题就得了28分。。。_加锁_07

原始序列 1,4,6,7,15,33,39,50,64,78,75,81,89,96

1)待查序列不为空,将它的中间元素与要查找的目标元素进行匹配,看它们是否相等,low = 0 ; high = 13;( low+high)/2=6.5,向下取整为6,下标为6的元素为39

39与目标元素81不匹配,需要进行比较:

第一次比较:81 大于 39,向39以后查找

2)待查序列不为空,将它的中间元素与要查找的目标元素进行匹配,看它们是否相等,low = 7 ; high = 13;( low+high)/2=10.5,向下取整为10,下标为10的元素为75

75与目标元素81不匹配,需要进行比较:

第二次比较:81 大于 75,向75以后查找

3)待查序列不为空,将它的中间元素与要查找的目标元素进行匹配,看它们是否相等,low = 11 ; high = 13;( low+high)/2=12,下标为12的元素为89

89与目标元素81不匹配,需要进行比较:

第三次比较:81 小于 89,

4)待查序列不为空,将它的中间元素与要查找的目标元素进行匹配,看它们是否相等,low = 11 ; high = 11;( low+high)/2=11,下标为11的元素为81

81与目标元素81匹配,不需要进行比较。

结束,共需要三次比较。

二分查找算法的原理如下:


  1. 如果待查序列为空,那么就返回-1,并退出算法;这表示查找不到目标元素。
  2. 如果待查序列不为空,则将它的中间元素与要查找的目标元素进行匹配,看它们是否相等。
  3. 如果相等,则返回该中间元素的索引,并退出算法;此时就查找成功了。
  4. 如果不相等,就再比较这两个元素的大小。
  5. 如果该中间元素大于目标元素,那么就将当前序列的前半部分作为新的待查序列;这是因为后半部分的所有元素都大于目标元素,它们全都被排除了。
  6. 如果该中间元素小于目标元素,那么就将当前序列的后半部分作为新的待查序列;这是因为前半部分的所有元素都小于目标元素,它们全都被排除了。
  7. 在新的待查序列上重新开始第1步的工作。

选择排序

这个 是没想到 用中间变量

2018的美团面试客观题就得了28分。。。_二分查找_08

一次交换,三次移动,因为交换需要借助辅助变量

T=A;

A=B;

B=T;

折半查找

2018的美团面试客观题就得了28分。。。_二分查找_09

插入排序

2018的美团面试客观题就得了28分。。。_加锁_10

开始只有前面 排序

2018的美团面试客观题就得了28分。。。_二分查找_11

字符串转换

没想到他竟然是这样的 string

public class MyClass {
public static void main(String[] args)
{
int i, a = 9, b = 6;
for (i = 1; i <= a * b; i++)
{
if (i % a == 0 && i % b == 0)
break;
}
System.out.println(a + b + "," + i);
}
}

2018的美团面试客观题就得了28分。。。_数据_12

KMP算法

2018的美团面试客观题就得了28分。。。_数据_13

next数组:0 0 0 1 0

第一次 :

a b a b c a b c a c b a b

a b c a c

匹配个数2-字符’b’(匹配的最后一个字符的)的next值0=2 即后移两位

第二次:

a b a b c a b c a c b a b

a b c a c

匹配个数4-字符’a’的next值1=3 即后移三位

第三次:

a b a b c a b c a c b a b

a b c a c

匹配成功!