阿里实习电话面试

暑期实习面试记录2

今天面了俩,腾讯后端开发和蚂蚁金服,都是一面。下午面的腾讯,晚上面的蚂蚁金服。

腾讯

下午腾讯面的时候一直在问简历,重点是看项目。他先问了油气田那个项目,我感觉自我陈述的时候还是有很多问题。他问到那个关于文件和数据库系统读写慢的时候,我的回答还是太菜了。(哎

第二个交通枢纽平台的陈述,我的简历写的工作负责的业务部分写的含混不清(确实太蠢了),这里该把简历好好改一下,突出重点。

后面又让我写了一些C++的代码,确实好久不写这个忘得差不多了(泛型完全就是Java的写法了)。

总而言之,我的简历还是有好多问题。这次的面试主要是围绕项目来讲的,对基础知识考察并不深入(感觉像是在二面),面试官说他们部门用C++,说我的技术栈时候做web后端,把我转推出去。我自己觉得还是说不管做什么样子的开发,能深入进去搞就好,不知道还有没有下次机会。

蚂蚁金服

晚上开会完突然打电话过来就开始面试了(我吓了一跳)。主要还是Java技术栈考察,不得不说阿里系就是Java啊。因为是电话面试,感觉还没有这么紧张,下面罗列一下问题。

ArrayList和HashMap的构造:前者数组,后者数组+链表+红黑树。

HashMap为什么用红黑树:这个没答上,应该是加快查询速度。https://blog.csdn.net/weixin_43258908/article/details/89174471

描述简历上项目的工作:油气田开发和交通枢纽开发的东西我又复述了一遍。

后面开始做题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
1)写一个字符串归一化程序,统计字符串中相同字符出现的次数,并按字典序输出字符及其出现次数。
// 如字符串"babcc"归一化后为"a1b2c2"
public String fun1(String a){
HashMap<Charater,Integer> map = new HashMap<Charater,Integer>();
for(char c:a){
map.put(c,map.getOrDefault(c)+1);
}
StringBuilder sb = new StringBuilder();
for(Entry e:map){
sb.append(e.getKey());
sb.append(e.getValue());
}
return sb.toStirng();
}
//这里的遍历放入sb是有问题的,因为放入HashMap不能保证有序,需要使用有序遍历HashTable之类的才可以


2)实现对一个List通过DSL筛选
QList<Map<String, Object>> mapList = new QList<Map<String, Object>>;
mapList.add({"name": "hatter test"});
mapList.add({"id": -1,"name": "hatter test"});
mapList.add({"id": 0, "name": "hatter test"});
mapList.add({"id": 1, "name": "test test"});
mapList.add({"id": 2, "name": "hatter test"});
mapList.add({"id": 3, "name": "test hatter"});
mapList.query("id is not null and id > 0 and name like '%hatter%'");

QList<Map<String, Object>> mapList2 = new QList<Map<String, Object>>;

for(Map<String,Object> map:mapList){
String name = map.get("name");
String hatter = "hatter";
for(char c:name){
for(char c1:hatter){
if(c!=c1){
break;
}

}
}
if(map.get("id") > 0 && ){
mapList2.add(map);
}
}
return mapList2;
//这里的问题是没有写出来KMP的字符串匹配,也没想到其他的方法
//还有一个问题是如果这条件从and变成or上面的代码就无法使用了,需要对每个条件分别查询再去做集合操作才是正确思路


// 3)有个学生成绩表t_student_score,包含name(姓名),score(成绩),查询出成绩前3的所有学生
select name from t_student_score

//这个是真的不会,SQL的复杂写法确实忘了
//https://blog.csdn.net/weixin_42159940/article/details/94742024

// 4)任意一种排序算法
public void paixu(int[] a){
for(int i = 0;i<a.length()-1;i++){
for(int j = i+1;j<a.length();j++ ){
if(a[i]<a[j]){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
//面试官让我调优这个冒泡排序,我隐约记得一个flag的方法,但是没写出来
//https://blog.csdn.net/hansionz/article/details/80822494

总结

这次比之前还是要好上一些,多总结多练习吧!加油,奥里给!虽然很难但是要努力