面试题day23

小米

Java开发 一面

  • 一个用户订单表,一个用户有可能多个订单,查询出每个用户的最新订单

  • Java 新建线程有哪几种方式

  • Java 内存区域,new出来的对象分配在哪里,堆内存里面是怎么划分的,为什么要分为新生代,老年代

    方法区 堆

    本地方法栈、虚拟机栈、程序计数器、直接内存

    edon s1 s2 老年代

    8 1 1 20

  • 线程有哪些状态,阻塞状态和等待状态有什么区别

    创建、就绪、运行、阻塞、终止

    在进入synchronized方法之前因为抢不到锁对象而进入阻塞状态,进入阻塞队列。

    进入到synchronized方法后由于调用了wait()方法而进入等待状态,此时进入等待队列,等待其它线程调用它的notify()方法将他唤醒。

  • 数据库建立索引的原则,复合索引的命中规则

    表的主键、外键必须有索引;

    数据量超过300的表应该有索引;

    经常与其他表进行连接的表,在连接字段上应该建立索引;

    经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;

    索引应该建在选择性高的字段上;

    索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引

  • zookeeper 了解吗,节点类型

  • 了解分布式服务吗,dubbo?

  • 说下 spring 的 IOC 与 AOP

    Spring IOC 容器就像是一个工厂一样,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来的

    Spring AOP 就是基于动态代理的

  • Java 反射有哪几种方式

    • 全类名加载
      Class<?> aClass1 = Class.forName("com.example.demo.Person");
    • 类名.class
      Class aClass2 = Person.class;
    • 对象.getClass
      Person jack = new Person("jack", 10);
      Class<? extends Person> aClass3 = jack.getClass();
  • 算法题:青蛙跳台阶,反转单链表

4399

Java一面

  • 自我介绍+项目

  • Java的垃圾回收算法有哪几种?

    复制、清除、整理

  • JVM内存区域划分?哪些是线程共享的,哪些是非线程共享的?

  • 如果发生OOM的错误,有哪几种可能的原因?

    堆 创建太多对象 jmap

    栈 递归过多 jstack

    方法区 jconsle

  • 如何实现对一个单向链表进行局部反转?

  • MySQL主要的存储引擎?

  • MyISAM与InnoDB的区别?

    是否支持行级锁 mvcc 外键 事务

  • InnoDB底层数据结构是哪种?

    聚簇索引

  • 知道平衡二叉树这个数据结构吗?如果一个有N个节点的平衡二叉树,深度是多少?

    logn

  • 聚簇索引与非聚簇索引?

  • SQL题:有一张表,记录了三个字段分别是学生、课程和成绩,计算出表里面课程总分超过300分的学生名单以及他们各自的总分

网易有道

9.3 一面 50min

  • 判断字符串中是否有重复字符,用了set

  • 快排非递归,不会,然后用递归写了

  • java集合

    list set map

    有序可重复、无需不可重复

  • 多线程,jvm

  • springmvc 的一些常用注解的问题,获取参数的注解,RestController 和Controller的区别等等

    @RequestMapping @RequestParam @RequestBody @PathVaribale @ModelAttribute

    @RequestParam @RequestBody @PathVaribale

    是否返回json

  • mybatis # $的区别

    是否预编译

  • mysql相关的问题

  • redis的常用数据类型

    list 压缩链表 双端列表

    string 整型 简单动态字符串 embstr简单动态字符串

    hash 哈希表 压缩链表

    set 整型 哈希表

    rset 跳表 压缩链表

渤海银行

  • 介绍技术栈和项目;

  • 类中静态变量和非静态变量在jvm中的存储;

    实例变量,Java堆内存中
    局部变量,方法中的栈帧中的局部变量表中
    静态变量,存放在方法区内

  • 对多线程了解吗;

  • 大数据量的k-v怎么存到hashmap中;

    • 第一个扩容的问题,主要还是要通过配置合理的容量大小和扩容因子,尽可能减少扩容事件的发生;
    • 第二个锁资源的争夺,在put方法中会使用synchonized对头节点进行加锁,而锁本身也是分等级的,因此我们的主要思路就是尽可能的避免锁等级。所以,针对第二点,我们可以将数据通过通过ConcurrentHashMap的spread方法进行预处理,这样我们可以将存在hash冲突的数据放在一个组里面,每个组都使用单线程进行put操作,这样的话可以保证锁仅停留在偏向锁这个级别,不会升级,从而提升效率
  • 二进制流对文件的处理;

    创建一个FileOutputStream对象,使用它的构造方法传递文件的位置

    此对象调用write方法,将数据写入到文件中;

    数据写入完成后,释放资源。

  • 使用springboot对数据库查询处理的过程;

    三层架构、数据库

  • 问有没有用sql往数据库导入过数据;

  • 什么时候用try catch。

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