我去公司面试,人事经理面试没有过,我却把责任链模式学会了

2023-11-05

设计模式在开发当中是运用特别多的,设计模式就是参照我们日常生活特性,抽象出特性,从而某种实现达到具体要求。当然这当中一定是灵活转变,责任链正式拉开序幕。

我去某某互联网公司去面试,好的方向的流程大致应该是,你上招聘软件投递简历,简历筛选通过,hr邀约面试,面试流程自然是,项目经理,技术总监,老板,Hr行政。大的维度自然是这样,得出结论就有了下面一个图。

我去公司面试,人事经理面试没有过,我却把责任链模式学会了

你会进行一轮面试,面试的过程类似一个责任的关系链,这个流程必须安装规范规定来,你不能直接去和Hr谈薪资,更不能直接去和老板面试,这就是具体的特性。

你要面试过了项目经理,那你就得去和技术总监面试,技术总监面试过了,你得老板谈一谈,老板要觉得合适,就直接让Hr联系你。基本老板会问你大概的期望。

但是我3轮下来我面试都过了,hr那里面试我却被pass掉了,Hr问了一个问题,你工作六年怎么换了4,5家公司,其实就是内心反问你这小伙子还是太年轻了,其实你内心早就按耐不住,你想说我想跳就跳,我打工赚钱。但是你不能这么说,明明就是要钱的事,但是你却要说得无比的高尚情操。互联网也是内卷得太严重..........

开始正题:

责任链设计模式:通俗易懂地来说,一套流程,一套规范,特定的行为,指定的实现,组合成一个设计模式。

根据以上场景我们得出结论:

抽取公共行为和方法:进行面试,面试结果反馈,下一轮面试,全局的面试记录。

定义抽象hanlder:

package com.xy.design.hanlder;

/**
 * <p>
 *  抽取公共实现方法,共同行为,面试
 * @author xy
 * @since 2021-10-21
 */
public abstract class InterviewHanlder {

    /**
     * 定义一个全局的Hanlder
     */
    protected InterviewHanlder interviewHanlder;

    /**
     * 抽取共同行为的方法,面试
     */
    public abstract void getTheInterview();

    /**
     * 面试结果反馈下一轮面试
     * @param nextGatewayHandler
     */
    public void setNextGatewayHandler(InterviewHanlder nextGatewayHandler) {
        this.interviewHanlder = nextGatewayHandler;
    }



    /**
     * 继续下一轮的面试
     */
    protected void nextInterviewFlag() {
        if (interviewHanlder != null)
            interviewHanlder.getTheInterview();
    }

责任流程实现:

第一关项目经理面试实现:

package com.xy.design.hanlder.impl;

import com.xy.design.common.Constants;
import com.xy.design.hanlder.InterviewHanlder;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

/**
 * 项目经理面试
 * 第一关面试
 */
@Service(Constants.INTERVIEW_PM)
@Component
public class PMHandler extends InterviewHanlder {


    @Override
    public void getTheInterview() {
        System.out.println("项目经理面试--通过----------------");
        nextInterviewFlag();
    }
}

第二关技术总监面试实现:

package com.xy.design.hanlder.impl;

import com.xy.design.common.Constants;
import com.xy.design.hanlder.InterviewHanlder;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

/**
 * 技术总监面试
 * 第二关面试
 */
@Service(Constants.INTERVIEW_JS)
@Component
public class TechnologyHandler extends InterviewHanlder {

    @Override
    public void getTheInterview() {
        System.out.println("技术总监面试--通过----------------");
        nextInterviewFlag();
    }
}

第三关,老板面试实现:

package com.xy.design.hanlder.impl;

import com.xy.design.common.Constants;
import com.xy.design.hanlder.InterviewHanlder;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

/**
 * 老板面试
 * 第三关面试
 */
@Service(Constants.INTERVIEW_BOOS)
@Component
public class BoosHandler extends InterviewHanlder {


    @Override
    public void getTheInterview() {
        System.out.println("老板面试--通过----------------");
        nextInterviewFlag();
    }
}

第四关 hr面试实现

package com.xy.design.hanlder.impl;

import com.xy.design.common.Constants;
import com.xy.design.hanlder.InterviewHanlder;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;

/**
 * hr面试
 * 第四关hr行政面试
 */
@Service(Constants.INTERVIEW_HR)
@Component
public class HrHandler extends InterviewHanlder {


    @Override
    public void getTheInterview() {
        System.out.println("HR谈面试--通过----------------");

    }
}

具体实现类:

package com.xy.design.service;

import com.xy.design.common.Constants;
import com.xy.design.hanlder.InterviewHanlder;
import com.xy.design.utils.SpringUtils;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * 责任链具体实现类
 * @author xy
 * @since 2021-10-21
 */
@Service
public class interviewHanlderServiceImpl implements InterviewHandlerService {

 
    private InterviewHanlder firstGatewayHandler;

    
    @Override
    public InterviewHanlder getHandler() {
        //todo 这里最好是写成动态数据库配置 我这里测试使用写死的方式
        InterviewHanlder firstInterviewHanlder = SpringUtils.getBean(Constants.INTERVIEW_PM, InterviewHanlder.class);
        //根据顺序依次设置责任链执行
        List<String> hanlderList = new ArrayList<>();
        hanlderList.add(Constants.INTERVIEW_JS);
        hanlderList.add(Constants.INTERVIEW_BOOS);
        hanlderList.add(Constants.INTERVIEW_HR);
        //用一个临时变量接收全局Hanlder
        InterviewHanlder temoInterviewHanlder = firstInterviewHanlder;
        for (String hanlder : hanlderList) {
          //通过代理获取实现类SpringContenxt
            InterviewHanlder hanlderImpl = SpringUtils.getBean(hanlder, InterviewHanlder.class);
            temoInterviewHanlder.setNextGatewayHandler(hanlderImpl);
        }
        this.firstGatewayHandler = firstInterviewHanlder;
        return firstGatewayHandler;
    }
}

公共参数:

/**
 * 项目经理标识
 */
public static    String INTERVIEW_PM = "pm";

/**
 * 技术总监标识
 */

public  static  String INTERVIEW_JS = "js";


/**
 * 老板标识
 */

public  static  String INTERVIEW_BOOS = "boos";


/**
 * Hr标识
 */

public  static  String INTERVIEW_HR = "hr";

控制器:

package com.xy.design.controller;


import com.xy.design.hanlder.InterviewHanlder;
import com.xy.design.service.InterviewHandlerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HandlerController {
    @Autowired
    private InterviewHandlerService interviewHandlerService;

    @RequestMapping("/interview")
    public String interview() {
        InterviewHanlder interviewHanlder = interviewHandlerService.getHandler();
        interviewHanlder.getTheInterview();
        return "面试pass掉了,Hr让我给她钱让我去公司学习技术.......";
    }
}

我去公司面试,人事经理面试没有过,我却把责任链模式学会了

我去公司面试,人事经理面试没有过,我却把责任链模式学会了

我去公司面试,人事经理面试没有过,我却把责任链模式学会了

成功了,我们完整的一套完整的责任链就实现了。一关有一关,是不是超级简单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我去公司面试,人事经理面试没有过,我却把责任链模式学会了 的相关文章

随机推荐

  • webpack5+mockjs

    上篇提到升级 vue cli 5 0 1后 发现webpack 是v5 之前配置devServer after异常 于是认真看了一下文档 webpack v5文档 v5的devServer去掉了get和after 添加了setupMiddl
  • 日期的生成

    获取系统当前时间 日期类型为timestamp 日期格式为2010 11 04 16 19 42 方法1 Timestamp d new Timestamp System currentTimeMillis 方法2 Date date ne
  • 实对称矩阵的性质_今天行列式的矩阵是一个实对称矩阵, 主对角线是同一个元素, 其余位置是另一元素。该矩阵的行列式有相当好的性质, 同学们要加以记忆...

    行列式计算 5 01 前言 1 今天我们继续讨论特殊行列式的计算思路与方法 今天这组题的行列式的矩阵是一个实对称矩阵 主对角线是同一个元素 其余位置是另一元素 该矩阵的行列式有相当好的性质 需要同学们加以记忆 2 第1题 第一个行列式的计算
  • MyBatis - 14 - 分页插件的配置及使用

    文章目录 1 分页插件配置 1 在pom xml中添加依赖 2 在MyBatis的核心配置文件中配置插件 2 分页插件的使用 回顾Mysql分页功能 MyBatis分页插件的使用 测试显示第1页 每页显示4条数据 打印page对象 测试获取
  • java Collection和Map接口的区别

    一 Collection接口 Collection是最基本的集合接口 一个Collection代表一组Object 即Collection的元素 Elements 一些Collection允许相同的元素而另一些不行 一些能排序而另一些不行
  • 荔枝派Zero(全志V3S)驱动开发之hello驱动程序

    文章目录 前言 一 设备驱动分类 二 字符设备驱动简介 三 字符设备驱动开发 1 APP打开的文件在内核中如何表示 2 编写驱动程序的步骤 3 hello 驱动程序编写 lt 1 gt 试验程序编写 lt 2 gt 测试程序编写 lt 3
  • Maven的Pom文件中的隐式依赖导致Jar包冲突的问题

    分享一下我老师大神的人工智能教程 http blog csdn net jiangjunshow 也欢迎大家转载本篇文章 分享知识 造福人民 实现我们中华民族伟大复兴 在一次的maven项目中遇到这样一个bug 编译器没有报什么错 但无法编
  • python爬取boss直聘招聘信息_python学习之路-爬取boss直聘的岗位信息

    背景 想了解从事python相关岗位需要具备什么技能 于是就想从招聘网站上的职位需求入手 把信息获取下来后 生成词云 这样就能很直观的看出来哪些技能是python相关岗位需要具备的了 技术概览 scrapy request wordclou
  • 面试官:说一下单点登录的几种实现方式

    Java面试笔试面经 Java技术每天学习一点 Java面试 关注不迷路 作者 张永恒 来源 https www cnblogs com yonghengzh p 13712729 html 在 B S 系统中 登录功能通常都是基于Cook
  • centos ip 没有显示

    进入 cd etc sysconfig network scripts 编辑网卡设置 我的网卡默认是ifcfg ens33 有的网卡默认是ifcfg eth0 执行 vi ifcfg ens33 将onboot no 改为onboot ye
  • MPU6500驱动调试笔记(STM32F407+SPI)

    一 问题背景 本来最开始实验室使用MPU6050芯片 采集陀螺仪原始数据做生理信号采集 但算法发现用IIC接口采样率 200hz 达不到要求 故寻找同类型支持SPI协议的芯片去替代 发现了这块MPU6500 还便宜 就用起来 在读写寄存器费
  • ST 电机控制工作台帮助文档翻译 之 STM32F3x 的 OCP 和 OVP(使用嵌入式模拟的过压保护(仅限 STM32F3x))

    ST 电机控制工作台 使用嵌入式模拟的过压保护 仅限 STM32F3x 图5显示了可以使用 STM32F30x 的内部资源实现的过压保护网络的基本实现 图5 过压保护网络 原理类似于 过流保护
  • linux-目录相关作用

    文章来自狂神老师的笔记 同时会有自己的体会 狂神老师课程的链接 https www bilibili com video BV187411y7hF from search seid 10463862828616102628 注意 linux
  • 基于SpringBoot的实习管理系统

    末尾获取源码 开发语言 Java Java开发工具 JDK1 8 后端框架 SpringBoot 前端 Vue HTML 数据库 MySQL5 7和Navicat管理工具结合 服务器 Tomcat8 5 开发软件 IDEA Eclipse
  • 一位技术主管的十年编程经验总结 .

    一位技术主管的十年编程经验总结 有天和朋友聊天 朋友是国内一家大型互联网企业的一位技术主管 朋友把他将近十年研发工作积累的心血总结成两点 这两点朋友刚一提出来我并没有马上明白 只是大约有这么一个概念 我还没达到朋友在技术领域的那种高度 不能
  • PAT乙级1041 考试座位号 (15 分)

    1041 考试座位号 15 分 一 问题描述 每个 PAT 考生在参加考试时都会被分配两个座位号 一个是试机座位 一个是考试座位 正常情况下 考生在入场时先得到试机座位号码 入座进入试机状态后 系统会显示该考生的考试座位号码 考试时考生需要
  • 机器学习:Jupyter Notebook中numpy的使用

    一 Jupyter Notebook的魔法命令 模块 方法 或者help 模块 方法 查看模块 方法的解释文档 1 run 机械学习中主要应用两个魔法命令 run timeit 魔法命令格式 命令 run 将模块引用并在Jupyter No
  • Java设计模式——备忘录模式

    文章目录 备忘录模式 备忘录模式 主要目的是保存一个对象的某个状态 以便在适当的时候恢复对象 个人觉得叫备份模式更形象些 通俗的讲下 假设有原始类A A中有各种属性 A可以决定需要备份的属性 备忘录类B是用来存储A的一些内部状态 类C呢 就
  • PyQt5 pyqtSignal: 自定义信号传入的参数方法

    PyQt5 pyqtSignal 自定义信号传入的参数方法 在PyQt5当中 用户是可以自定义信号与槽函数的 这里想讲的是如何在pyqtSignal中传入任何的参数 一般来说 我们会在pyqtSignal 中传入不同的参数 以便完成不同类之
  • 我去公司面试,人事经理面试没有过,我却把责任链模式学会了

    设计模式在开发当中是运用特别多的 设计模式就是参照我们日常生活特性 抽象出特性 从而某种实现达到具体要求 当然这当中一定是灵活转变 责任链正式拉开序幕 我去某某互联网公司去面试 好的方向的流程大致应该是 你上招聘软件投递简历 简历筛选通过