citibank 面试

1. jdk 1.8

1.1 default关键字

在java里面,我们通常都是认为接口里面是只能有抽象方法,不能有任何方法的实现的,那么在jdk1.8里面打破了这个规定,引入了新的关键字default,通过使用default修饰方法,可以让我们在接口里面定义具体的方法实现,如下。

public interface testJDKService {
    void test1();
    default void test2(){
        System.out.println("test2");
    }
}
public class TestJDKServiceImpl implements testJDKService {
    @Override
    public void test1() {
        System.out.println("test1");
    }


    public static void main(String[] args) {
        testJDKService test = new TestJDKServiceImpl();
        test.test1();
        test.test2();
    }
}

citibank 面试_第1张图片

1.2 stream 应用

取得属性集合

public void testStream(){
        ArrayList<User> list = new ArrayList<>();
        User user = new User();
        user.setAge(12);
        user.setName("qqq");
        list.add(user);
        User user2 = new User();
        user2.setAge(123);
        user2.setName("www");
        list.add(user2);
        List<String> nameList = list.stream().map(User::getName).collect(Collectors.toList());
        System.out.println(nameList);
    }

取得最大值

 int asInt = list.stream().mapToInt(User::getAge).max().getAsInt();

2 分布式

分布式日志是如何实现的

  • elk+kafka
    安装教程

自己还没时间看 有时间要仔细研究一下

3 sql优化

判断是哪种索引
mysql
type:

     显示sql执行的类型,从最好到最差的类型为system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL。一般来说,type至少要达到range级别,最好达到ref级别,低于range级别的sql必须进行优化。

key: 显示sql执行过程中实际使用的键或索引,如果为null则表示未使用任何索引,必须进行优化。

Extra:

如果是Only index,这意味着信息只用索引树中的信息检索出的,这比扫描整个表要快。

如果是where used,就是使用上了where限制。

如果是impossible where 表示用不着where,一般就是没查出来啥。

如果此信息显示Using filesort或者Using temporary的话会很吃力,WHERE和ORDER BY的索引经常无法兼顾,如果按照WHERE来确定索引,那么在ORDER BY时,就必然会引起Using filesort,这就要看是先过滤再排序划算,还是先排序再过滤划算。

 EXPLAIN  select column_name,title,url from t_sky_news where column_name = '公告公示'

你可能感兴趣的:(JAVA,面试,java,职场和发展)