加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • 技术选型
    • GLM-4-Plus:文章总结
    • GLM-4-Plus:面试解答
    • GLM-4-Plus:针对公司的面试题库
    • 训练面试题大模型
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

一招搞定互联网大厂面试提问!

10/12 11:10
964
阅读需 24 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

大家好,我是小林。

最近收到读者反馈,在面试某个公司时,想要针对性地看该公司的面经比较困难,如果有快速 get 到公司面试重点的方法就好了。

于是,我想到一个好主意,我们何不把面经库喂给AI,这样就可以指定一个公司看面试题了

试想一下,我下星期要面试腾讯,我直接问AI,帮我梳理腾讯的面试重点知识,那么就可以根据AI输出的重点知识靶向学习一波,这下面试需要准备的知识再也不用靠猜了!

这样复习到的知识,被面试问到的概率就会很高,这样的学习投入产出比不要太高了。

那说干就干!

技术选型

当然,我们在开发一个项目的时候,肯定首先要考虑技术选型的事情,技术选型重要的是基于场景来考虑, 比如实用性、开发成本、费用成本等等。

那么,做AI工具前,我们先来调研用哪个大语言模型。

那问题来了,国内外那么多大模型,到底哪个才是好用的呢?

于是我问了一位身处大模型行业的朋友,而他向我推荐了智谱旗下,据说性能十分强劲的GLM-4-Plus。

要说最近智谱也是动作频频啊,不但更新了基座大模型 GLM-4-Plus,还以此为契机,将旗下一系列全模型家族都上线到了bigmodel.cn。

而在 SuperBench 9 月综合榜最新的大模型评测中,国内模型 GLM-4-Plus 在本次评测中排名全球第三(国内第一),打破了国外模型对前三名的垄断。

从图中我们可以看到,国内模型在多个方面都有明显提升,包括对齐、智能体和数理逻辑等。

虽然和OpenAI还有一些差距,但也是遥遥领先其他国产大模型了!因为网络原因,我们调用OpenAI的模型不太方便,再加上国外模型对中文的适配度普遍较差。

最终我决定选择我们国产的模型GLM-4-Plus来做AI面试题知识库!

那问题来了,GLM-4-Plus是国内哪家的大模型的呢?

我调研了一下,发现是智谱团队全自研的大模型,智谱是由清华大学计算机系技术成果转化而来的公司。

在这次最新的国内外大模型的评测中,也能明显看到GLM-4-Plus的基本素质过硬,明显强于其他国产模型,进入世界第一梯队

除此之外,我还想看看他的价格如何。

可以,零帧起手就是免费的1亿tokens,做个小应用完全够用了!

常见构建智能体的操作(文生文、文生图、文生视频、微调、知识库等),在智谱的文档里也写的相当清楚,对我们程序员的眼睛很友好!

接着,我们再看看GLM-4-Plus,到底有多厉害?能解决我的需求吗?

先来做个简单测试:「9.9 和  9.11,谁比较大?」,别看这个问题简单,之前有不少大模型都在这个简单的数学问题上翻车了。

我们,来看看智谱的GLM-4-Plus模型的回答。

很聪明,GLM-4-Plus模型回答是正确的,有意思的是,在后面也小小吐槽了其他大模型在这类简单的问题却出现了错误。

既然针对GLM-4-Plus模型的小测试,它挑战成功了,我们来继续测试测试GLM-4-Plus模型更多的能力。

文章总结的能力

面试解答的能力

最后,我把我整理的面经库交给模型,手把手教大家如何写一个可以指定公司的面试题库机器人,面试对应公司时,我们就能针对性地训练了!

GLM-4-Plus:文章总结

我在公众号已经分享了 100 多篇的互联网后端开发的面经,累计起来也有 100 万字了,其实这也是一个庞大的知识库了,但是短期着急面试的同学,肯定也看不完。

如果你突然收到了字节的面试,想要快速复习字节常考的知识点,我教大家一个高效的复习方法!

你可以从《互联网中大后端开发的面经》中找到我发布过的字节面经文章,然后把文章保存到本地文件交给了智谱AI BigModel开放平台的GLM-4-Plus模型来梳理文章的内容。

比如,我挑选了一篇字节的面经,上传之后,GLM-4-Plus会把重点内容的知识进行了分类,并且还把算法题的 leetcode 编号写出来,也方便我们可以去 leetcode 去练习这个算法题。

接下来,你可以针对不熟悉的内容进一步去学习。

比如,我跟他说「我对 RPC 与 HTTP 的区别不是很懂,请你帮我解释一下」,GLM-4-Plus模型是很认真回答了这个问题,而且罗列的也很全面。

GLM-4-Plus:面试解答

大家出去面试的时候,最好面试完之后,要把问题整理一下,并且要针对每一个问题进行复盘,这样你的成长才会比较快

为了更高效的对自己的面经进行复盘,我们可以把面试问题直接上传给GLM-4-Plus模型,让他帮我们整理!

比如,我这里找了一个同学的互联网中厂的Java后端面经,把内容保存为文件。

接着,直接上传给GLM-4-Plus模型,让它给出回答,不到几秒的时间,GLM-4-Plus模型就把所有问题的回答都总结出来了:

如果你想针对某一个问题,想具体详细的进一步学习,你可以继续追问。

比如,我让GLM-4-Plus模型帮我梳理HashMap 梳理 jdk1.7 版本和 1.8 版本的区别,一下子就给出更详细且清晰的回答了。

通过这种方式,就可以非常高效的复盘和整理自己的面经了,如果想要进一步深入某个面试题,多向GLM-4-Plus模型追问几句就可以,简单又高效!

GLM-4-Plus:针对公司的面试题库

通过文章总结,我们可以总结一篇面经文章的内容。可是,我们在准备某个公司面试时,一篇文章显然是不够的,而单纯和AI对话也不能容纳太多的上下文。

那么如果我想要制作一个海纳百川的题库,然后根据指定公司得到对应的面试题和解答呢?答案是:构建一个面经知识库!

我们只需要完成以下几步:

创建自己的API key

创建知识库:上传所有的面经

训练面试题大模型

问答:面试哪个公司就唤起哪个公司的“面试官”

创建自己的API key

调用GLM-4-Plus 模型接口调用非常简单,官方都已经给出代码示例了,只需要复制代码示例,然后把代码示例中的API密钥改成你自己的,就完事了,极大缩减了开发的周期。

首先,创建一个自己的API key。而且,完全不用担心token问题!智谱先送 1 亿Tokens:

老用户献上大礼:根据用户在9月份用量情况,赠送额度2000万到 1亿tokens的tokens资源包。

新用户巅峰起步:每位新注册用户,注册后即可获赠 1亿额度Tokens资源包。

接着,在代码里初始化client:

private static final String API_SECRET_KEY = "此处替换为你的API key";
private static final ClientV4 client = new ClientV4.Builder(API_SECRET_KEY)
         .networkConfig(60, 60, 60, 60, TimeUnit.SECONDS)
         .build();

创建知识库

新建一个知识库,上传各个公司的面经(这里我就上传了我整理的面经文章)。

注意,我们可以根据文章格式,配置文档类型为文章知识、问答类知识或自定义知识。

训练面试题大模型

我们设计两个角色:AI面试官和AI面试者。

AI面试官:根据我们指定的公司,从知识库找到问题提问。(此时你可以根据问题试试自己能不能答得出来!)

AI面试者:根据知识库的解答,总结并润色成“人话”。(此时你可以对比看看自己刚才回答得怎么样)

(1)我们先设计好他们各自的Prompt

    private static final String AI_INTERVIEWER_SYSTEM_PROMPT =
            "从知识库中找属于{{用户给出的公司名称}}的后端开发面试题,用于向面试者提问,找不到就用自身知识提问并且告诉用户该信息不是来自文档。n" +
                    "如果用户没有给出公司名称,请从知识库中随机找面试问题。n" +
                    "要求:(1)只需要提出问题,绝对不要回答给出的问题。(2)至少给出5个问题 (3)不要直接照搬知识库内容,请将找到的内容润色成面试问题(4)按照{序号}.{面试题}的格式输出";
    private static final String AI_APPLICANT_SYSTEM_PROMPT =
            "你是一位求职者,你要结合知识库,清晰准确地回答面试官提出的问题。n" +
                    "要求:(1)优先搜索知识库答案 (2)找到答案后,润色成口语化表达 (3)使用第一人称进行回答,回答不超过200字。";

(2)第二步,我们包装一个请求函数,传入上下文(之前发过的消息)、配置知识库工具等。话不多说,直接看代码:

    public static String invoke(String systemMessage, String userMessage) {
        // 1. 这里的作用是收集上下文,让AI根据我们给出的上下文继续推导,也可以把入参直接改为List<ChatMessage> context
        List<ChatMessage> messages = Arrays.asList(
                new ChatMessage(ChatMessageRole.SYSTEM.value(), systemMessage),
                new ChatMessage(ChatMessageRole.USER.value(), userMessage)
        );

        // 2. 配置知识库工具
        List<ChatTool> tools = Collections.singletonList(createKnowledgeChatTool());

        // 3. 构建请求
        ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder()
                .model("glm-4-long") // 使用最新的大模型
                .stream(false) // 不使用流式输出
                .invokeMethod(Constants.invokeMethod)
                .messages(messages) // 已知上下文
                .tools(tools) // 其他工具:网络搜索、知识库、自定义函数等
                .build();

        try {
            // 4. 发起请求,如果想到达到GPT那种“打字”效果,可以转换为流式输出(SSE、Websocket)
            ModelApiResponse invokeModelApiResp = client.invokeModelApi(chatCompletionRequest);
            return (String) Optional.ofNullable(invokeModelApiResp)
                    .map(ModelApiResponse::getData)
                    .map(data -> data.getChoices().get(0).getMessage().getContent())
                    .orElse("");
        } catch (Exception e) {
            System.err.println("调用AI失败: " + e.getMessage());
            return "";
        }
    }

    private static ChatTool createKnowledgeChatTool() {
        ChatTool tool = new ChatTool();
        tool.setType(ChatToolType.RETRIEVAL.value()); // 规定工具类型为搜索知识库
        Retrieval retrieval = new Retrieval();
        retrieval.setKnowledge_id(KNOWLEDGE_ID); // 指定知识库ID
        tool.setRetrieval(retrieval);
        return tool;
    }

(3)搭建根据Prompt和用户输入得到回答的机器人

AI面试官:输入为面试官Prompt+公司名,让AI根据知识库调出对应公司的面试题

AI面试者:输入为面试者Prompt+刚才面试官提出的问题,让AI根据知识库的解答,回答问题

这是测试函数的代码:

    public static void main(String[] args) {
        String company = "字节";
        String aiInterviewerReply = invoke(AI_INTERVIEWER_SYSTEM_PROMPT, company);
        if (StringUtils.isEmpty(aiInterviewerReply)) {
            return;
        }

        // 切分字符串为问题数组
        List<String> questions = Arrays.asList(aiInterviewerReply.split("n"));

        // 按需保存问题和答案
        Map<String, String> questionAnswerMap = new LinkedHashMap<>();
        questions.forEach(question -> {
            String userPrompt = String.format("---公司名---n%sn---面试问题---n%s", company, question);
            String aiApplicantReply = invoke(AI_APPLICANT_SYSTEM_PROMPT, userPrompt);
            questionAnswerMap.put(question, aiApplicantReply);
        });

        // 打印结果
        printResults(company, questionAnswerMap);
    }

    private static void printResults(String company, Map<String, String> questionAnswerMap) {
        System.out.println("****** " + company + " ******");
        questionAnswerMap.forEach((question, answer) -> {
            System.out.println("============================");
            System.out.println(question);
            System.out.println(answer);
        });
    }

(4)主体函数完成了,接下来我们来测试一下!也顺便看看你能不能答出来吧!

字节

阿里

腾讯

美团

最后

怎么样?

通过我前面测试的情况,大家肯定也是能明显感觉到 GLM-4-Plus 在语言理解、长文本处理、逻辑推理能力还是非常强大的。

咱们的算法和面试题方面的问题统统都能被 GLM-4-Plus 模型轻松解决,妥妥就是我们学习编程和面试的好帮手。

而且GLM-4-Plus 模型提供的SDK,也可以很简单就上手了,简单几行代码就能直接调用   GLM-4-Plus 模型接口,极大的缩减了开发周期。

随着大模型的普及,未来肯定也会出现更多有意思的AI应用,如果你正在做AI相关的应用,那么接入国内第一梯队的GLM-4-Plus 模型是不错的选择,不仅能力强,而且上手快,更关键价格对开发者太友好了。

智谱团队也给开发者们发了个大福利:新用户注册后即可获赠 1 亿额度 Tokens 资源包

即使用完这个免费的额度 GLM-4-Plus 定价也很实在,一千 Token 仅需0.005元,相比前代旗舰 GLM-4-0520 便宜了 50%,这力度太强了,难道又要卷起一波,国内大模型价格战?

大家可以直接访问智谱开放平台 bigmodel.cn 注册领取,也可以点击下方「阅读原文」快速跳转

相关推荐

电子产业图谱