华为面试(一面)1103
开场:自我介绍+项目介绍
提问环节:含个人基本信息,项目和八股,手撕代码
1.个人基本信息:本科和研究生期间有得过什么奖嘛?专业排名?为什么没有去实习?
2.项目相关:这个项目花了多长时间,遇到的主要难点是什么?如何应对缓存击穿问题?项目中有实际用到?还是对该知识点有了解?
3.笔试复盘:做对的题思路复述,没做对的题目 想出解决办法了嘛?具体谈谈
4.八股:(问得比较多)
1)JVM的垃圾回收机制,调用System.gc()后会发生什么?会立即对垃圾进行回收嘛?
2)栈的特点
3)说说有哪些排序算法?详细说一下选择排序的思路及其时空复杂度
4)Linux 中的755权限?
(linux系统中的755权限是指所有者拥有可读、可写、可执行权限,所属组与其他用户仅拥有可读与可执行权限。linux系统的权限一般是用1-3位数字代表文件所有者的权限,4-6位数字代表同组用户的权限,7-9位数字代表其他用户的权限。)
5) Linux 中终止进程的命令
6) 关系型数据库和非关系型数据库的区别
7) 谈谈Spring AOP
8) Map, List, Set都继承自Collection接口嘛?说说他们的区别
9)HashTable与HashMap 的区别? HashMap线程安全的类?
10)获取对象的类的方式有哪些?对象实例.getClass(),Class.forName(全限定类名),内置基本数据类型.TYPE, 类名.class。
11) 线程创建的方式有哪些?
12)run和start()的区别?
13)死锁形成的条件
14)面向对象的原则有哪些?讲讲开闭原则
15)Java11的新特性了解嘛
16)运行时异常有哪些?(数组越界,类型转换,空指针,输入不匹配,非法的参数,无访问权限....)
17)你觉得你目前还有哪些不足?
5.手撕代码
题目:给定一行字符串,字符串间用逗号隔开,eg:xiaoming,xiaozhang,xiaoli,zhangsan,xiaoming
要求:出现次数不等时,按出现次数降序排列;出现次数相等时,按字符串升序排列,
返回结果:xiaoming 2,xiaoli 1,xiaozhang 1,zhangsan 1
python版:
def func():
arrs=input().split(',')
dic={}
for arr in arrs:
if arr not in dic:
dic[arr]=1
else:
dic[arr]+=1
tmp=sorted(dic.items(),key=lambda x:(-x[1],x[0]))
#print(tmp)
res=''
n=len(tmp)
for i in range(n):
k,v=tmp[i]
res+=k+' '+str(v)
if i!=n-1:
res+=','
print(res)
if __name__=='__main__':
func() Java版:package com.kiki.huawei1026;
import java.util.*;
public class Solution1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
HashMap<String,Integer> map=new HashMap<>();
String str=sc.nextLine();
String[] lists=str.split(",");
for(int i=0;i<lists.length;i++){
String cur=lists[i];
if(!map.containsKey(cur)){
map.put(cur,1);
}else{
map.replace(cur,map.get(cur)+1);
}
}
List<Map.Entry<String,Integer>> list2=new ArrayList<>(map.entrySet());
Collections.sort(list2, new Comparator<Map.Entry<String, Integer>>() { @Override public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
//前小于后返回-1,等于返回0,大于返回1(比较结果为1进行交换)
int a=o2.getValue()-o1.getValue();
if(a>0)
return a;
a=o1.getKey().compareTo(o2.getKey());
if(a>0)
return a;
else
return -1;
}
});
int n=list2.size();
for (int i=0;i<list2.size();i++) {
Map.Entry<String,Integer> entry=list2.get(i);
System.out.print(entry.getKey()+" "+entry.getValue());
if(i!=list2.size()-1){
System.out.print(",");
}
}
//System.out.println(list2);
}
}

查看18道真题和解析