面试题day27

百度

  • 实习或者自己的小项目中接触过设计模式吗?比如用过什么设计模式?

    单例模式、代理模式、工厂模式

  • 多态这个概念口述一下?

    重写 重载

  • HashMap 和 TreeMap 区别了解吗?使用场景了解吗?说一下 HashMap 的底层实现?

    HashMap无序,TreeMap有序。

    HashMap覆盖了equals()方法和hashcode()方法,这使得HashMap中两个相等的映射返回相同的哈希值;TreeMap则是实现了SortedMap接口,使其有序。

    HashMap的工作效率更高,而TreeMap则是基于树的增删查改。更推荐使用HashMap。

    HashMap基于哈希桶实现,TreeMap是基于红黑树实现。

  • LinkedList 和 ArrayList 有什么区别?LinkedList 底层是双向链表,这个双向链表给他提供了哪些得天独厚的优势?

    基于数组,需要连续内存;基于双向链表,无需连续内存

    随机访问快(指根据下标访问);随机访问慢(要沿着链表遍历)

    尾部插入、删除性能可以,其它部分插入、删除都会移动数据,因此性能会低;头尾插入删除性能高

    可以利用 cpu 缓存,局部性原理;占用内存多

    遍历o(n/2) 不会有循环链表

  • 多线程的实质了解吗?如何实现线程池

    单线程池、定量线程池、动态线程池、定期线程池

  • Java 线程池有哪些参数?

    核心线程数、最大线程池、线程存活时间、时间单位、阻塞队列、拒绝策略、线程工厂

  • 标准的 JDK 有几种方法去新建、启动一个线程?

    thread runnable callable

    start()

  • CPU 使用率和负载的概念了解吗?

    CPU利用率:显示的是程序在运行期间实时占用的CPU百分比

    CPU负载:显示的是一段时间内正在使用和等待使用CPU的平均任务数。

  • 浏览器输入 www.baidu.com 到页面呈现,后台经历了哪些过程?

    缓存 dns ip tcp https

  • Spring AOP 原理了解吗?如何用 JDK 原生的 API 实现自己的动态代理模式?

    Spring AOP 就是基于动态代理的,如果要代理的对象,实现了某个接口,那么Spring AOP会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,就无法使用 JDK Proxy 去进行代理了,这时候Spring AOP会使用 Cglib 生成一个被代理对象的子类来作为代理。常用于计算接口运算时间、记录日志。

    AspectJ AOP 基于字节码操作的AOP。

  • MySQL 的存储引擎有哪些?

    myisam innodb

    事务 mvcc 锁粒度 外键 底层实习 场景

  • 索引是一个什么东西呢?

  • 创建索引时要遵循哪些基本原则?

    建立唯一索引。唯一索引能够更快速地帮助我们进行数据定位;
    为经常需要进行查询操作的字段建立索引;
    对经常需要进行排序、分组以及联合操作的字段建立索引;
    在建立索引的时候,要考虑索引的最左匹配原则
    不要建立过多的索引。因为索引本身会占用存储空间;
    如果建立的单个索引查询数据很多,查询得到的数据的区分度不大,则考虑建立合适的联合索引;
    尽量考虑字段值长度较短的字段建立索引,如果字段值太长,会降低索引的效率。

  • 索引在查询时候要遵循一个最左匹配,这个最左匹配是什么情况?

  • 联合索引 (a, b, c),where 条件为 a = 1, c = 2,这个索引会生效吗?b=2 and a=1呢

    会,虽然不满足最早前缀原则,mysql优化

  • 在 Spring 中,操作数据库时,想实现一个事务,该怎么写代码?

    事务隔离级别 传播行为 异常回滚 超时时间

  • 有张 Person 表,有 name 和 age 两个字段,如何找出这张表年龄第二大的人,如果人数大于 1,我们需要把人名打印出来,这个 SQL 语句怎么写?

    SELECT * FROM
    (SELECT DISTINCT
        age
    FROM
        table
    ORDER BY age DESC
    LIMIT 1 OFFSET 1) AS SecondHighestage
    
  • Redis 做分布式锁了解吗,怎么实现的?如果有 A、B 两个线程同时获取锁,都去 Redis 中加锁,假设 A 先加锁,但是 A 比较磨叽,没加完,这时候 B 也来加锁,B 不磨叽,立马加上了锁,A 就会产生一个独占了这把锁的假象,继续执行,怎么解决?

    setnx

  • Linux 了解的多吗?如何找出当前路径下 .java 文件的个数?

    ls | grep .java

  • 用过 Docker 吗?用自己的话说 Docker 和传统的虚拟机有啥区别?

    Docker启动快速属于秒级别,虚拟机通常需要几分钟去启动;

    Docker需要的资源更少,Docker在操作系统级别进行虚拟化,Docker容器和内核交互,几乎没有性能损耗,而虚拟机就差了很多;

    Docker更轻量,Docker的架构可以共用一个内核与共享应用程序库,所占内存极小;同样的硬件环境,Docker运行的镜像数远多于虚拟机数量,对系统的利用率非常高;

    与虚拟机相比,Docker隔离性更弱,Docker属于进程之间的隔离,虚拟机可实现系统级别隔离;

  • 实习了多久?主要负责什么业务?在 JD 那边主要负责什么?

  • 你感觉经过两次实习,你认为自己比较得意的技术产出是什么?

  • 中间件都用什么?

补充

  • 自我介绍

  • 本科在哪里?没考虑考研吗?

  • 挑一下你之前做过的比较有技术含量的项目讲一下吧,先介绍一下业务、再介绍一下技术架构、还有一些难点?

  • 说一下你为什么要使用 Lucene?索引的是什么?需要建几个索引?标题、描述、内容的权重是一样的吗?

  • 还引入了什么?答了引入 Nginx 做负载均衡,继续追问如果其中一个服务出问题怎么办,怎么保障他的高可用?

  • 说一下实习的项目吧?

  • 为什么配置态服务和运行态服务要分开?我在运行态服务里面把配置放到配置文件中不行吗?

  • 配置态配置存在哪里?运行态服务能访问这个数据库吗?为什么要引入配置中心,不让运行态服务去查数据库呢?怎么保证数据库和配置中心的数据一致性

  • 呢?数据库成功了,推送配置中心没成功怎么办?重试还不成功呢?

  • 你觉得用配置中心有什么好处呢?直接在运行态读数据库不也挺好,为什么要引入配置中心呢?

  • 再举一个例子,比如说有多个部门,不同的部门存的数据格式都不一样,管理的服务也不一样,他们有一些数据可能相互需要,这时候,你觉得用配置中心

  • 能解决这个问题吗?

  • 服务 A 的数据库改了,服务 B 怎么办?这个配置需要多个部门同时使用,所以这个变动别人需要感知到。各个部门都维护一套数据库,相互调用接口这个

  • 方案好,还是都存到一个配置中心,大家互相拉取好?说一下优缺点?

  • 在 Java 中,有 hashCode() 方法和 equals() 方法,当我定义一个对象时,为什么有时候要重写这两个方法?什么时候需要重写这两个方法?

    维护 equals()=>hashcode()

  • 你了解函数式接口吗?他有什么作用?解决了什么样的问题?

    只有确保接口中有且仅有一个抽象方法

    方便lambda的使用,代替匿名内部类

  • Lambda 表达式解决了什么问题?临时的什么对象?为什么创建了这个对象就可以解决问题?这个对象有什么特点?如果没有 Lambda 你怎么做呢?Lambda 写的那个表达式是干什么用的?Lambda 表达式真正的好处在哪?

  • 函数式接口有什么好处?你知道 Java 里面默认的函数式接口有哪些?你用过什么方法里面,会用到函数式接口作为参数?

    生产者、消费者

  • 用了 Comparable 接口的排序方法和没用 Comparable 接口的排序方法有什么优点呢?

    实现Comparable接口的类的对象”可以用作“有序映射”中的键或“有序集合(TreeSet)”中的元素, 而不需要指定比较器。

posted @ 2022-08-11 21:24  Faetbwac  阅读(29)  评论(0编辑  收藏  举报