首页 > 其他分享 >4.面试介绍

4.面试介绍

时间:2023-06-17 11:01:37浏览次数:41  
标签:调用 策略 介绍 kafka 面试 内存 告警 回收

总结:

  1.功能介绍

面试官老师您好:

  我叫吴孟达,我在java方面有7年开发经验,分布式开发有四年经验,

  1.有spring,springmvc,springboot,mysql(以及sql调优和索引优化),springcloud,mybatis,docker等项目经验,

  2.熟练使用kafka、redis,docker等第三方插件,

  3.有nginx,elasticsearch,doubo等使用经验,

  4.熟悉javaIO\NIO\多线程,通信协议、设计模式等技术、

  5.熟悉JVM的工作原理、垃圾回收原理并掌握常见性能调优方法

2.项目介绍

  在云网控制和采集平台项目中,参与项目设计开发,负责其中告警数据、配置数据的采集分析和转派单处理,项目组有7个人,做了半年,现已平稳上线运行

  vue做前台展示,springboot作为其核心框架层,nigix做反向代理,redis做为其缓存层,eureka做为其服务注册中心,openfegin作为其远程调用接口,kafka作为其第三方消息中间件,docker容器化部署,ribbon作为其内部负载均衡

    1.有redis集群搭建,以及其分布式锁的开发经验,解决过分布式锁的归一化、可重入性,以及锁失效问题

    2.解决过JVM 的oom问题,有内存调优方面的经验

    2.cpu使用猛增,死锁问题

    3.有kafka集群搭建,解决过kafka的数据重复、数据乱序、重复性消费以及数据积压问题

    4.在项目开发中,我换专研过包括springmvc、springboot的自动配置源码,java集合源码、juc、线程池,多线程锁等源码,jvm jmm模型和垃圾回收算法

    5.在项目中用过mysql索引,解决过数据库性能问题

    6.实际使用了设计模式(包括策略模式,工厂模式,单例模式,责任连模式,模板方法等)

    在平时工作中,我是一个高效并学习能力很强的人,工作中喜欢将自己不熟悉的内容书面化,方便二次查阅



1.功能介绍

面试官老师您好:

  我叫吴孟达,我在java方面有7年开发经验,分布式开发有四年经验,

  1.有spring,springmvc,springboot,mysql(以及sql调优和索引优化),springcloud,mybatis,docker等项目经验,

  2.熟练使用kafka、redis,docker等第三方插件,

  3.有nginx,elasticsearch,doubo等使用经验,

  4.熟悉javaIO\NIO\多线程,通信协议、设计模式等技术、

  5.熟悉JVM的工作原理、垃圾回收原理并掌握常见性能调优方法

2.项目介绍

  在云网控制和采集平台项目中,参与项目设计开发,负责其中告警数据、配置数据的采集分析和转派单处理,项目组有7个人,做了半年,现已平稳上线运行

  vue做前台展示,springboot作为其核心框架层,nigix做反向代理,redis做为其缓存层,eureka做为其服务注册中心,openfegin作为其远程调用接口,kafka作为其第三方消息中间件,docker容器化部署,ribbon作为其内部负载均衡

    1.有redis集群搭建,以及其分布式锁的开发经验,解决过分布式锁的归一化、可重入性,以及锁失效问题

      例如:在做其中告警采集时,实时告警请求过来时,会缓存告警id,十分钟内恢复告警请求不来的话会进行派单处理,有时候多条恢复告警会同时请求(攻防演练时会故意测试多条恢复告警情况),会先对实时告警id加入分布式锁(stringRedisTemplate.opsForValue().setIfAbsent(PRODUCT_ID, "binghe")

    2.解决过JVM 的oom问题,有内存调优方面的经验

        1.https://www.cnblogs.com/wmd-l/p/16289793.html

        2.https://zhuanlan.zhihu.com/p/551301967?utm_id=0

    2.cpu使用猛增

      1.程序中存在死循环或者长时间占用 CPU 的操作。比如,不合理的递归操作、循环操作等等。

      2.程序中存在大量的 IO 操作,例如读写文件、网络通信等等。

       3.程序中存在内存泄漏或者内存溢出,导致 JVM 不断进行垃圾回收

    3.有kafka集群搭建,解决过kafka的数据重复、数据乱序、重复性消费以及数据积压问题

    4.在项目开发中,我换专研过包括springmvc、springboot的自动配置源码,java集合源码、juc、线程池,多线程锁等源码,jvm jmm模型和垃圾回收算法

      展示设备高兴时需要展示设备照片 

      1.假如有一个应用需要读取大量的本地图片 * 如果每次都去图片都从硬盘中读取则会严重的影响性能 * 如果一次性全部加载到内存中有可能会造成内存溢出 此时可以使用软引用(内存足够时不回收,不够时回收)或者弱引用(垃圾回收时都回收,不管内存是否足够)解决这个问题 设计思路: 用一个HashMap来保存这些图片的路径和响应的图片对象关联的软引用之间映射关系,在内存不足时,JVM会自动回收这些缓存图片对象所占用的空间,从而有效的避免了OOM的问题 Map<String,SoftReference<Bitmap>> imageCache=new HashMap<String,SoftReference<Bitmap>>();

    5.在项目中用过mysql索引,解决过数据库性能问题

    6.设计模式的使用

      1.策略模式

      通俗定义:要执行一些方法,方法有几个,什么方法,这些是固定的;但是方法的实现是不一样的,有多种策略,那这个时候,就可以定义一个基本的封装方法的接口,然后再定义不同的                      策略实现类。这样在调用的时候,只需要传入指定的区分不同策略的条件,然后调用具体的方法就可以了

      在处理告警时,因各厂家的告警处理逻辑不一样,如华为厂家需要需要夹带设备信息,烽火需要转派处理,所以定义一个基本的封装方法接口,定义不同的处理逻辑策略类,调用时,根据                      不同厂家调用不同的策略类

                   在获取具体策略时,又同步使用了工厂模式和单例模式,来初始化一个具体的策略

      所有的策略对象都会实现同一个接口(处理告警数据),

      

public class SQLDialectFactory {

        /**
         * className => 策略类的映射
         */
        private static final Map<String, 策略类> DIALECT_POOL = new ConcurrentHashMap<>(); // 线程安全
        /**
         * 策略对象缩写===策略对象全类名
         */
        定义了一个枚举类,里面包含策略对象缩写===策略对象全类名
        private SQLDialectFactory() {
        }

        public static 策略对象 getDialect(String className) throws ClassNotFoundException {
            //获取策略对象
            SQLDialect dialect = DIALECT_POOL.get(className);
            if (null == dialect) {
                synchronized (Class.forName("类模板")) {
                    if (null == dialect) {
                        //调用不同厂家的工厂类创建对应的策略类对象
                    }
                }
            }
            return dialect;
        }
    }

  2.责任链模式,在进行告警处理前会进行大量的业务校验,如一些必填参数校验(网元ip,告警类型,告警级别等),群障标识等,割接重保拦截,规则拦截等

     1.https://my.oschina.net/u/4179967/blog/5304716

 

  3.模板方法

    在告警除安排工单处理时,有公共的处理流程,如查询出设备详细信息,挂带设备地址等,但是具体的查询方法,以及挂在设备的处理方式不一样(某些厂家查询出的设备名称需要进行截取等等),转派单处理,所以定义了一个抽象类,将公共的流程抽象成一个个公共的抽象方法,并定义一个骨架流程方法,调用抽象方法,最终会调用到子类的具体实现上

 

  4.观察者模式

  告警转派工单后需要提醒不同级别的人,

在平时工作中,我是一个高效并学习能力很强的人,工作中喜欢将自己不熟悉的内容书面化,方便二次查阅

    

标签:调用,策略,介绍,kafka,面试,内存,告警,回收
From: https://www.cnblogs.com/wmd-l/p/17485669.html

相关文章

  • C++面试八股文:什么是左值,什么是右值?
    某日二师兄参加XXX科技公司的C++工程师开发岗位第16面:面试官:什么是左值,什么是右值?二师兄:简单来说,左值就是可以使用&符号取地址的值,而右值一般不可以使用&符号取地址。inta=42; //a是左值,可以&aint*p=&a;int*p=&42; //42是右值,无法取地址二师兄:一般左值存在内存......
  • 【基础算法】单链表的OJ练习(5) # 环形链表 # 环形链表II # 对环形链表II的解法给出证
    前言本章的OJ练习相对于OJ练习(4)较为简单。不过,本章的OJ最重要的是要我们证明为何可以这么做。这也是==面试==中常出现的。对于OJ练习(4):==->==传送门==<-==,分割链表以一种类似于归并的思想解得,回文链表以一种巧妙复用前面OJ题的思想解得。啰嗦一下:对于本章,最重要的是......
  • C++面试八股文:在C++中,你知道哪些运算符?
    C++面试八股文:在C++中,你知道哪些运算符?某日二师兄参加XXX科技公司的C++工程师开发岗位第11面:面试官:在C++中,你都知道都哪些运算符?二师兄:啥?运算符?+-*/=这些算吗?面试官:嗯,还有其他的吗?二师兄:当然还有,+=,-=,*=,/=,==,还有逻辑运算,位运算等。面试官:好的。那你知道这些运算......
  • Mysql面试看这一篇就够了
    面试不懂Mysql那可是寸步难行,快来看看下面的这些Mysql面试题,看看你能坚持到哪里?1.说说mysql主从同步怎么做的吧?首先先了解mysql主从同步的原理:master提交完事务后,写入binlogslave连接到master,获取binlogmaster创建dump线程,推送binglog到slaveslave启动一个IO线程读取同......
  • Day01 1.1 APP逆向的介绍
    Day01APP逆向的介绍【一】APP逆向入门(1)逆向设备与root真机和模拟器解BL锁fastboot刷机和roottwrp刷root面具和常见模块(2)Python虚拟环境系统解释器环境virtualenv虚拟环境解释器配置常见错误(3)抓包和配置charles介绍配置和安装https证书用户证书与系统证书解......
  • 微服务基础介绍
    一、基本概念微服务最主要的功能是根据业务拆分成一个一个的子服务,实现功能的去耦合,每一个微服务提供单个业务功能的服务,各司其职,从技术角度看就是一种灵活独立的单元,能够自行单独启动和关闭,一般每个服务都拥有自己的数据库模块。在传统的IT行业软件大多都是各种独立系统的堆砌,这......
  • SR好 SRH介绍
         ......
  • KALI LINUX 官方文档之介绍 --- 我应该使用Kali Linux吗?
       ka1iLinux有什么不同?ka1iLinux是专门为满足专业肾透测试和安全审计的要求而设计的。为了实现这一目标,ka1iLinux中实施了一些反映这些需求的核心变化。1.默认禁用网络服务。ka1iLinux含有systemd钩子,默认情况下它会禁用网络服务。这些钩子允许我们在ka1iLinux上......
  • Altair SimSolid Cloud功能介绍 衡祖仿真
    AltairSimSolidCloud创新型云原生结构仿真软件,支持用户随时随地从任何浏览器访问新一代仿真技术。此软件消除了几何结构简化和网格划分,这两项在传统有限元分析中非常耗时且需要大量专业知识的工作,SimSolidCloud能在短短几秒至几分钟的时间内提供结果,并且轻松处理各种复杂的装配......
  • Altair SimSolid Cloud功能介绍 衡祖仿真
    AltairSimSolidCloud创新型云原生结构仿真软件,支持用户随时随地从任何浏览器访问新一代仿真技术。此软件消除了几何结构简化和网格划分,这两项在传统有限元分析中非常耗时且需要大量专业知识的工作,SimSolidCloud能在短短几秒至几分钟的时间内提供结果,并且轻松处理各种复杂的装配......