9.26-bbt面试记录

第一轮:笔试

16道选择题+2道编程题+1道sql大题+列举6个常用注解并说明用处+列举十条java编程规范

  • 选择题全是java程序执行结果题,问你程序最终是否能通过编译,或者最终输出结果(这里我错了贼多题,依稀记得“以下哪些是java隐式声明” + 和String相关的编程输出题错得比较多)
  • 编程题的话,一道是关于多线程的,用10个线程分别打印A~J10个字母,输出不要求顺序;另一道是手写单列模式(我只写了伪代码,大概是用CopyOnWriteArrayList存放字母,然后起线程池for循环倒序打印,每打印完一个字母就将其从列表移除;单例居然没写出来啊啊啊啊啊)
  • sql就是很常见的sql练习,没写完,写sql没啥手感,一共三题,最后一题直接写了思路

第二轮:面试(问业务)

介绍一下自己的项目:
1.面试官其中有问项目并发性是否要求很高,我主要做基于第三方的交易,回答了并发并没有要求很高,因为我们的场景是读多写少。面试官表示理解
2.面试官又问了K线数据这种实时信息是怎么做到的,我回答这不是我的业务。。
3.我介绍了项目架构由于第三方的服务升级,我们的协议从长连接改成了http调用,并且介绍了架构演变。顺便把CountDownLatch给举例说了一嘴

第三轮:基础提问

1.讲一下“字符串常量池”,我直接给他上手画图
2.问我是否了解索引是一笔很大的开销,我说听说过,但是不是很了解。然后面试官就转方向问了:假设现在有字段name,年月日、性别,他们的查询频率都差不多,问我这三个是否都可以创建索引。答曰除了“性别”外,其他都可以搞索引,因为其他字段是比较有差异性的字段,可以很快地根据这些条件识别出一些记录
3.问我VO和DTO的区别,and是否知道VO和DTO这几个单词全称是啥。
4.在笔试题的java编程规范那里,我写了一个“代码修改之前要先看它的引用”,面试官问了我具体啥意思。我回答,假设出现了一种场景,使得原方法不满足我的场景了,我准备改掉它。那么改这个方法之前应该看看它的其他调用者的使用场景,判断一下我改完之后会不会干扰他们的使用。。
面试官跟我讲这个方法要保持单一职责,碰到这种情况,抽一个接口,另外实现这个场景方法更好。

大概写了一下多线程题的实现,不知道是否正确

package com.ling.ddd.aboutCollection;

import java.util.concurrent.CopyOnWriteArrayList;

public class TestPrint {

    static class Task implements Runnable {

        private String i;
        public Task(String i) {this.i = i;}
        @Override
        public void run() {
            System.out.println(this.i);
        }
    }

    public static void main(String[] args) {

        CopyOnWriteArrayList<Object> list = new CopyOnWriteArrayList<>();
        list.add("A");
        list.add("B");
        list.add("C");
        list.add("D");

        for (int j=list.size(); j>=1; j--) {
            new Thread(new Task((String) list.get(j-1))).start();
        }

    }
}

程序判断题有提到接口成员变量的缺省属性:
Java接口成员变量和方法默认修饰符(缺省属性)

接口改错题:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值