研途教育科技有限公司-线下面试(纸笔作答)

① 用Python生成器写斐波拉契数列

核心知识点:yield

yield 的作用是:把一个函数变成一个"流水线生产器"。

这个函数可以"生产"一系列值,但不像普通函数那样一次性生产所有产品堆在你面前,而是 "生产一个,交货一个,等你需要下一个时再生产下一个" 。这能极大地节省内存,并允许处理无限的数据流。

参考答案:

python 复制代码
 def fibonacci_generator(n=None):
     a, b = 1, 1
     # 计数器,记录已经生成了多少个数
     counter = 0
 ​
     while True:
         # 如果已经生成了 count 个数字,就返回
         if n is not None and counter >= n:
             return
         yield a
         a, b = b, a + b
         counter += 1
 ​
 if __name__ == '__main__':
     print("前10个斐波那契数:")
     fib_gen = fibonacci_generator(10)
     for num in fib_gen:
         print(num, end=' ')
 ​
     print("\n\n无限生成示例(前5个):")
     fib_gen_infinite = fibonacci_generator()
     for i in range(5):
         print(next(fib_gen_infinite), end=" ")

② 优化正方形和长方形的类

原题:请优化以下代码

python 复制代码
 class Rectangle():
     def __init__(self, length, width):
         self.length = length
         self.width = width
 ​
     def area(self):
         return self.length * self.width
 ​
     def perimeter(self):
         return 2 * self.length + 2 * self.width
 ​
 class Square():
     def __init__(self, length):
         self.length = length
 ​
     def area(self):
         return self.length * self.length
 ​
     def perimeter(self):
         return 4 * self.length

参考答案:

python 复制代码
 # 我改了这个函数 -- 少做一次乘法
 def perimeter(self):
         return 2 * (self.length + self.width)
 # 不想写父类来让Rectangle和Square继承了

③ 通过 LangChain 和 Deepseek 对话

python 复制代码
 from langchain_openai import ChatOpenAI
 from langchain.chains import ConversationChain
 from langchain.memory import ConversationBufferMemory
 ​
 # 创建聊天模型
 llm = ChatOpenAI(
     model='deepseek-chat',
     api_key='your_api_key',
     base_url="https://api.deepseek.com"
 )
 ​
 # 创建对话链
 conversation = ConversationChain(
     llm=llm,
     memory=ConversationBufferMemory(),
     verbose=True
 )
 ​
 # 开始对话
 while True:
     user_input = input('Human: ').strip()
     # 设置退出指令
     if user_input.lower() == 'exit':
         print("再见!")
         break
     response = conversation.run(user_input)
     print(f"AI: {response}")

④ 使用requests库发送POST请求

python 复制代码
 import requests
 import json
 ​
 url = 'https://yantu.com.cn'
 ​
 headers = {
     'Content-Type': 'application/json',
     'User-Agent': '...'
 }
 ​
 # 注意这里的 body 是 <class 'dict'>
 body = {
     "name": "张三",
     "age": 30,
     "city": "北京"
 }
 # 将 dict 类型转化为 json 格式
 data = json.dumps(body)
 ​
 response = requests.post(url=url, headers=headers, data=data)
 ​
 if response:
     print(f"状态码: {response.status_code}")
     print("响应内容:")
     # 显示中文需要设置 ensure_ascii=False
     print(json.dumps(response.json(), indent=2, ensure_ascii=False))
 else:
     print(f"无法连接到{url}")

⑤ 谈谈你对对大模型的理解

  1. LLM的基本概念 LLM 是一种基于人工智能的生成式AI系统,专门设计用于理解、生成和操作人类自然语言。这些模型通过在海量文本数据集上进行训练,能够掌握语言的复杂性,包括语法、语义等。

    LLM 的主要特征有:

    • 生成能力:与仅分析或分类文本的传统AI模型不同,LLM 能够创造全新的、连贯的文本内容。
    • 规模庞大:LLM 的"大"主要体现在其参数数量上,这些参数是模型从训练数据中学到的权重和偏差。现代 LLM 如 Qwen 的参数可达1000B个。
  2. LLM 的技术原理 LLM的核心架构基于Transformer网络。Transformer的核心创新是自注意力机制,该机制能够权衡句子中不同词语的重要性,使模型比之前的 RNN 或 LSTM 网络更高效地理解上下文。

    • 训练过程与关键技术:LLM 的训练通常分为预训练阶段和微调两个阶段。词嵌入技术是 LLM 理解语言的关键。它将单词表示为多维向量,使语义相近的词语在向量空间中位置接近,从而捕捉语言的内在规律。
    • 工作方式与局限性: LLM 本质上是概率预测引擎而非真正的"理解者"。它基于已有文本模式预测下一个最可能的词符,并不真正理解语言、事实或伦理道德。这一特性也导致了 LLM 会有幻觉现象、偏见问题、知识过时等局限。
  3. LLM 的应用实践 LLM 正逐步深入专业领域,通过微调可适应法律、医疗等行业的特定需求.在医疗领域,LLM 可辅助疾病诊断;在金融领域,可帮助进行市场分析;在零售领域,则可提升客户互动体验。

相关推荐
还是鼠鼠2 小时前
SQL语句执行很慢,如何分析呢?
java·数据库·mysql·面试
风止何安啊2 小时前
一场组件的进化脱口秀——React从 “类” 到 “hooks” 的 “改头换面”
前端·react.js·面试
野生技术架构师2 小时前
Java面试题及答案总结(互联网大厂新版)
java·面试·状态模式
a努力。2 小时前
小红书Java面试被问:ThreadLocal 内存泄漏问题及解决方案
java·jvm·后端·算法·面试·架构
测试老哥3 小时前
2026软件测试面试大全(含答案+文档)
自动化测试·软件测试·python·测试工具·面试·职场和发展·测试用例
xiaoxue..3 小时前
LeetCode 第 15 题:三数之和
前端·javascript·算法·leetcode·面试
yaoh.wang3 小时前
力扣(LeetCode) 28: 找出字符串中第一个匹配项的下标 - 解法思
python·程序人生·算法·leetcode·面试·职场和发展·跳槽
yaoh.wang3 小时前
力扣(LeetCode) 35: 搜索插入位置 - 解法思路
程序人生·算法·leetcode·面试·职场和发展·跳槽·二分搜索
豆苗学前端3 小时前
闭包、现代JS架构的基石(吊打面试官)
前端·javascript·面试
测试人社区-千羽3 小时前
飞机自动驾驶系统测试:安全关键系统的全面验证框架
人工智能·安全·面试·职场和发展·自动化·自动驾驶·测试用例