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

① 用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 可辅助疾病诊断;在金融领域,可帮助进行市场分析;在零售领域,则可提升客户互动体验。

相关推荐
聪明的笨猪猪3 小时前
Java JVM “类加载与虚拟机执行” 面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
玩镜的码农小师兄4 小时前
[从零开始面试算法] (04/100) LeetCode 136. 只出现一次的数字:哈希表与位运算的巅峰对决
c++·算法·leetcode·面试·位运算·hot100
绝无仅有5 小时前
面试真实经历某商银行大厂计算机网络问题和答案总结
后端·面试·github
绝无仅有5 小时前
面试真实经历某商银行大厂系统,微服务,分布式问题和答案总结
后端·面试·github
paishishaba6 小时前
JAVA面试复习笔记(待完善)
java·笔记·后端·面试
聪明的笨猪猪15 小时前
Java JVM “调优” 面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
兩尛16 小时前
Spring面试
java·spring·面试
恋红尘19 小时前
Redis面试八股
数据库·redis·面试
hanxiaozhang201820 小时前
Netty面试重点-2
面试·netty
怪兽20141 天前
请例举 Android 中常用布局类型,并简述其用法以及排版效率
android·面试