面试

作者: 安然在路上 | 来源:发表于2020-05-24 11:47 被阅读0次

    我想进有好几个月年终奖的大厂呀。。。
    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。

    相关文章

      网友评论

          本文标题:面试

          本文链接:https://www.haomeiwen.com/subject/ptidahtx.html