我想进有好几个月年终奖的大厂呀。。。
2020年5月24日,今天做了一道华为的机试题,有两个小点不知道怎么写,题目是这样的:
根据键盘输入字母和数字啥的,按照顺序打印出每个字母出现的次数。例如:输入cBBbb123a,输出c=1, B=2, b=2, a=1。
//未解决:1、让map有序 2、按照格式打印map中的数据
我的是这么写的:
//未解决:1、让map有序 2、按照格式打印map中的数据
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
char[] str = in.nextLine().toCharArray();
Map cm = new HashMap<String,Integer>();
for (int i = 0;i<str.length;i++){
if(('a'<=str[i]&&str[i]<='z')||('A'<=str[i]&&str[i]<='Z')){
int tmpC = 0;
if(cm.get(str[i])!=null){
tmpC = (Integer)(cm.get(str[i]));
}
cm.put(str[i],++tmpC);
}
}
System.out.println(cm.toString());
}
其实离正确答案比较接近了,hashMap换成LinkedHashMap能实现有序,输出换成:
for(Object key : cm.keySet()){
System.out.println(key+"="+cm.get(key));
}
2020年5月21,还接了道格科技的微信视频面试,武大毕业有15年开发经验的架构师问我mysql的B+树;我说到用户角色权限那一块时,他问我角色继承怎么实现;问我jdk11和jdk13的新特性,问我有没有用过k8s。好吧,我真的很不专业。。。
2020年5月22日,接了两个软通动力的电话,一个问我left join,right join 和inner join的区别,一个让我具体讲讲单例模式,问我哪个关键字可以实现全局变量在线程间的可见性。感觉他们不够厉害。。。
2020年5月27日,刚刚做好青菜炒蛋,看到两个未接来电,立马打过去,原来是金蝶的面试官,他问了我好多问题,主要是高并发和数据库,感觉自己都答得不咋滴。但还是想记录一个问题:threadlocal使用的时候要注意什么?我在电话那头现场在《并发编程的艺术》里搜threadlocal,发现就那么一小段。。。
百度答案:ThreadLocal 变量解决了多线程环境下单个线程中变量的共享问题,使用名为ThreadLocalMap的哈希表进行维护(key为ThreadLocal变量名,value为ThreadLocal变量的值);
使用时需要注意以下几点:
线程之间的threadLocal变量是互不影响的,
使用private final static进行修饰,防止多实例时内存的泄露问题
线程池环境下使用后将threadLocal变量remove掉或设置成一个初始值
1、项目中怎么控制并发访问的
1、写了一个拦截器,在需要控制并发的方法加上这个注解
2、在拦截这个注解的切面类中定义了一个全局的Map<String,AtomicInteger> countMap。键存储渠道号,每个渠道号在数据库中配置一个最大线程数。获取该渠道号的当前线程,小于最大线程时,map中该渠道号的线程数加1,访问结束之后在finally中减1。
网友评论