纬创科技面试 2021.10.09 19:00

纬创科技面试

面试时间:2021.10.09 19:00

面试方式:两个面试官 腾讯视频面试

面试总结:总体面试比较简单,但是问题较多,也很全面。总体上还是比较满意的

问题

基本情况:

  • 介绍之前的项目情况,所负责的项目
  • 是否熟悉银行的项目,之前是否有了解过

Java基础

  • 面向对象的三大基本特征

    • 封装

    • 继承

      • 接口:
        • 方法:不能有方法的实现
        • 多实现接口
      • 抽象类:
        • 方法:可以有方法实现,也可以有抽象方法
        • 单继承
    • 多态

      这个答上来了,不过不是特别的全面,比如重写的访问权限、异常等

      • 重载 overload

        同一个类中,允许有一个以上相同名字的方法。与返回值无关,只看参数列表

        重:多个

        over:很多,load:加载 有很多方法可供加载的意思

      • 重写 overwrite

        重写表示只子类的方法,通过子类实例调用时,会覆盖父类的方法

        特点:

        • 访问权限 :父类=< 子类
          • 如果子类是private,子类实例只有本类可见,谈不上重写
        • 异常:父类>=子类
          • 如果子类抛多了异常,通过父类调用子类实例时,子类多的异常,根本无法得知,导致和无法捕获
  • java的数据类型

    要区分基础数据类型和引用数据类型:string和数组分别是什么

    并且分别存储在哪里

    • 基础数据类型 8个:boolean、byte、short、int、float、long、double、char
      • 存储在栈上
      • 没有String类型
    • 引用数据类型:类、接口、数组
      • 数组元素存储在堆中
  • ArrayList和LinkList的区别

    • ArraList:通过数组实现,get、set比较快
    • LinkList:通过链表实现,remove比较快
  • Java线程的几种状态

  • 多线程的集中实现方法

框架

Srring
  • IOC是什么:控制反传,把代码中的对象的创建、依赖都传递给IOC容器进行管理

    需要和AOP进行区分,AOP是面向切面编程

    如果不用IOC,需要处理对象之前的依赖是挺麻烦的

  • BeanFactory、FactoryBean的区别

    • BeanFactory:负责生产和管理Bean的一个工厂接口,提供一个Spring Ioc容器规范

    • FactoryBean:是一个工厂Bean,可以生成某一个类型Bean实例,它最大的一个作用是:可以让我们自定义Bean的创建过程

      //
      // Source code recreated from a .class file by IntelliJ IDEA
      // (powered by FernFlower decompiler)
      //
      
      package org.springframework.beans.factory;
      
      import org.springframework.lang.Nullable;
      
      public interface FactoryBean<T> {
          String OBJECT_TYPE_ATTRIBUTE = "factoryBeanObjectType";
      
          @Nullable
          T getObject() throws Exception;
      
          @Nullable
          Class<?> getObjectType();
      
          default boolean isSingleton() {
              return true;
          }
      }
      
  • Spring创建的对象是单例的吗?

    • 默认为单例,可以自己控制为多例
  • Spring bean的生命周期

    一般的对象是1.实例化 2.不使用后等待GC的销毁

    Spring管理的对象主要是单例的,如果是多例的创建后就不由spring管理了

    各个生命周期都要其拓展点,可以直接实现接口进行拓展

    • 实例化
    • 属性赋值
    • 初始化
    • 销毁
微服务
  • 什么是集群

    • 一组相互独立的计算机,通过通信网络组成的大型计算机服务系统
    • 负载规划、高可用、高性能等集群
  • 项目使用了哪些微服务

  • 网关的作用

    • 统一入口
    • 鉴权
    • 限流等
  • 微服务负载均衡策略是怎么做的

    • ribbon
  • 微服务之间的通信协议用的是哪些

    • RestAPI+RPC
消息中间件
MQ
  • 实际项目中MQ的使用场景

说了项目间消息的通信,松耦合系统间的通信。

  • 黑名单缓一级存的刷新:需要使用到广播模式
  • 门诊叫号
  • 其他的一些场景
    • 消息通信:聊天室
    • 流量销峰:利用消息队列先进先出,有队列长度的特点
    • 消息的延期推送:订单系统,半小时后发送问卷调查
  • 怎么保证MQ消息不丢失
    • 大体上分生产者、MQ中间件、消费者。
    • 生产和消费者感觉不同的中间件,可以开启事务或者握手确认
    • 中间件可以开启消息持久化
    • 业务上可以入表持久化进行确认
  • 怎么保证MQ不被重复消费
    • 程序上保持幂等,可以记录下唯一的ID等,判断时候已经消费过
Redis
  • 实际项目中Redis的使用

    基础数据缓存,并且和一级缓存Caffine配合门面模式一起使用

    • 分布式锁
  • 时候有遇到缓存雪崩和击穿的情况

    • 雪崩:同一时间缓存失效,导致DB压力过大
      • 设置不同的缓存失效时间:添加随即数解决
      • 热Key甚至更加合理的时间
      • 分级缓存
    • 击穿:查询大量不存在的key,或者数据库为null的数据,导致缓存不起作用
      • 查询到null放入到redis,设置一个断的失效时间
      • 使用布隆过滤器:数组+hash+01判断,不在就返回
      • 做好前端的参数校验
  • redis的其他使用场景

    分布式缓存。结构简单、速度快、支持多种数据类型

    • 计数器等等
  • redis支持那些数据类型

    我们项目中只支持:string、Object

    其他的LIst、Set、Hash、Byte等

DB
  • SQL优化技巧
  • 索引的建立规则
Linux等运维
  • 如何打ZIP、tar包

    当时说了递归的-r

    可以补充分卷压缩

    参数说明 multi

    • -s size 大小
    zip -s 28m ideaIU-2020.1.win.zip --out idea-2020-1
    
    • -r 递归

    -6 is the default compression level -0 is the lowest compression level -9 is the highest compression level

    zip 负责压缩文件

    dyq9410@XPS:~/Downloads$ zip -r -9 es6.zip ecma262-es2016-draft-201607-25
    
  • 是否有其他使用经验

    • 搭建rabbitmq
    • vi编辑器+chrom权限
其他问题
  • 之前工作复盘

    说最满意的一个项目:门诊MQ叫号+ANT maven化

    未做好的点:1.知识积累欠缺

    项目在流程和计划的重要性

  • 出差、行业选择和职业规划

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值