ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-10-22 12:32:08  阅读:145  来源: 互联网

标签:InterviewHanlder 学会 人事 面试 xy design import com


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

我去某某互联网公司去面试,好的方向的流程大致应该是,你上招聘软件投递简历,简历筛选通过,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让我给她钱让我去公司学习技术.......";
    }
}

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

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

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

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

标签:InterviewHanlder,学会,人事,面试,xy,design,import,com
来源: https://blog.csdn.net/qq_39751120/article/details/120903407

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有