记录一次2020Java后端面试题

2020Java后端面试题

    • 1 自我介绍
    • 2 项目的实现
    • 3 悲观锁乐观锁的区别
    • 4 MySQL 数据库的内连接,外连接,区别等
    • 5 MySQL 在使用内连接的时候先使用where和后使用where条件进行查询的区别
    • 6 实现线程的几种方法
    • 7 详细问了 线程池的七个参数
    • 8 线程池中线程满了怎么办
    • 9 Redis的基本数据结构
    • 10 分布式锁
    • 11 问了场景题: 如何从一本红楼梦中找出贾宝玉的名字的个数
    • 12 如何设计购物车
    • 13 购物车如何设计数据库表
    • 14 反问环节

1 自我介绍

一上来都是自我介绍  我: blablabla。。。。

2 项目的实现

问了项目的数据库的表,包含各个表之间的关系,个人所负责的业务,等等
反正就问的特别的详细

3 悲观锁乐观锁的区别

简单的来说就是悲观锁每次拿数据都要上锁,
乐观锁不上锁,而是反过头了对比数据是否被更改了

4 MySQL 数据库的内连接,外连接,区别等

5 MySQL 在使用内连接的时候先使用where和后使用where条件进行查询的区别

这里可以多理解理解MySQL的子查询

6 实现线程的几种方法

不多说了吧 基本都会,Runable , Thread , Callable, 线程池 ,说了一些区别

7 详细问了 线程池的七个参数

  /* *
         * @Author: WN
         * @Description:
         * @Date: 20:50 2020/6/7
         * @param: corePoolSize 核心线程数
         *         maximumPoolSize 最大线程数
         *         keepAliveTime 时间长度 过了多久超出corePoolSize的线程回收
         *         TimeUnit.SECONDS 时间单位
         *         Queue 队列
         *         默认工厂
         *         拒绝策略(四种)
         * @Version: 1.0
         */
        ThreadPoolExecutor executor = new ThreadPoolExecutor(
                4,
                5,
                4L,
                TimeUnit.SECONDS,
                new LinkedBlockingQueue<>(3),
                Executors.defaultThreadFactory(),
                new ThreadPoolExecutor.AbortPolicy()
        );

8 线程池中线程满了怎么办

没有理解他什么意思
是哪个满了
如果是corePoolSize满,就加线程但是大小不大于maxCorePoolSize
如果大小大于maxCorePoolSize 就放入队列
如果还大于队列长度,就启动拒绝策略

9 Redis的基本数据结构

String, Hash, Set, ZSet, List, 说了布隆过滤器 
这一块建议不要光说关键词, 一定要说出来区别, 以及他们适用的场景

10 分布式锁

说了用Redis的setnx 命令, 包括设置过期时间失败的时候怎么办
利用 set命令里面有NX参数 就可以了

11 问了场景题: 如何从一本红楼梦中找出贾宝玉的名字的个数

不知道 我胡说的用最小堆,我也没搜到答案,有会的大佬请解答!!!

12 如何设计购物车

说了要考虑并发等

13 购物车如何设计数据库表

14 反问环节

问了一些实习时间等等。。。

就这么多了大概,还有一些可能想不起来了, 以后再有面试, 还会发布
== 最后希望各位小伙伴尽快找到心仪的工作 ==

你可能感兴趣的:(面试,面试,java,spring)