🌙
交互式练习

LLM 练习 008

32 道题 · 选择题 + 填空题 + 简答题 + 代码实战 · 即时反馈 · 记录保存
← 返回主页
客观题
0/20
主观题
0/12
做题记录

做题记录

    暂无记录

    答题详情

    一、单选题(10 题)
    第 1 题单选题
    正则表达式最典型的用途,不恰当的选项是( )
    A 在一大段文本中检索符合某种模式的子串
    B 对匹配到的子串做替换或提取
    C 代替 if-else 完成所有业务分支判断
    D 表单、日志、爬虫等场景中的格式校验与抽取
    第 2 题单选题
    re.match(pattern, string) 的功能描述最准确的是( )
    A 在整段字符串中查找任意位置的第一个匹配
    B 从字符串起始位置尝试匹配;失败则返回 None
    C 返回字符串中所有匹配到的子串列表
    D 自动忽略大小写并支持多行
    第 3 题单选题
    re.search(pattern, string)re.match 相比,主要区别是( )
    A search 必须从行首匹配
    B search 可在整串中找第一个成功匹配,match 侧重开头
    C search 返回的一定是列表
    D 二者没有任何区别
    第 4 题单选题
    re.findall 的返回值特点正确的是( )
    A 匹配失败时一般抛异常
    B 匹配成功返回 列表;无匹配常返回空列表
    C 必须用 .group() 取结果
    D 固定返回一个 Match 对象
    第 5 题单选题
    下列 SQL 分类与用途对应错误的是( )
    A DDL:定义库、表、列等对象(如 CREATEALTERDROP
    B DML:对表记录增删改(如 INSERTUPDATEDELETE
    C DQL:查询记录(以 SELECT 为主)
    D DCL:专门用来执行 SELECT 排序与分组
    第 6 题单选题
    执行 DELETE FROM 某表;没有 WHERE)时,通常表示( )
    A 只删除主键为 0 的行
    B 删除整张表中所有行,表结构仍保留
    C 语法错误,无法执行
    D 只删除重复行
    第 7 题单选题
    关于主键(PRIMARY KEY),正确的是( )
    A 允许整列为 NULL
    B 用于唯一标识表中的一行,通常每张表至少有一个主键习惯设计
    C 一张表可以有任意多个主键列且彼此无要求
    D 主键与"外键"是同一个概念
    第 8 题单选题
    外键的主要作用是( )
    A 加快所有查询,替代索引
    B关系字段做约束,写入值需在关联表中存在(否则失败)
    C 禁止执行 JOIN
    D 只能关联本表自己
    第 9 题单选题
    分组查询中,SELECT 后的字段一般应满足( )
    A 任意写字段都可以
    B 出现在 GROUP BY 中的字段,或出现在聚合函数
    C 只能写一个字段
    D 禁止使用聚合函数
    第 10 题单选题
    HAVINGWHERE 的典型区别是( )
    A 完全相同,可互换
    B WHERE分组前的行过滤;HAVING分组聚合后的结果过滤,且 HAVING可以用聚合函数
    C HAVING 只能用于 DELETE
    D WHERE 后面必须跟 ORDER BY
    二、填空题(10 题)
    第 11 题填空题
    在 Python 中,re 模块三种常用匹配方式为 matchsearch
    第 12 题填空题
    match/search 匹配成功时常返回 Match 对象,取出匹配文本常用方法 (无分组时)。
    第 13 题填空题
    正则中量词默认多为 模式;在其后加 ? 常表示 模式。
    第 14 题填空题
    小括号 (...) 在正则中常用于 ,便于后续按序号取出子串。
    第 15 题填空题
    常见修饰符:re.I 表示忽略大小写;re.S 常使 . 能匹配包括 在内的更多情况(与默认"点"行为相关,按课堂理解填写)。
    第 16 题填空题
    数据库按存储形式大致分为关系型(表格行列)与 型(如键值、文档等)。
    第 17 题填空题
    创建数据表属于 (填 DDL / DML / DQL)范畴。
    第 18 题填空题
    更新表记录的典型格式:UPDATE 表名 SET 字段=值 [ 条件];
    第 19 题填空题
    分页查询中限制返回行数的关键字常写为:LIMIT(搭配 OFFSET 或双参数写法,按你课堂笔记填写一种即可)
    第 20 题填空题
    多表查询时,把两张表按关联条件连成结果集的语句中常出现关键字
    三、简答题(7 题)
    第 21 题简答题
    用自己的话说明:正则表达式主要解决什么问题?在哪些场景会用到?
    查看参考答案 ▼
    正则表达式用一套模式描述"长什么样"的字符串,用于在大文本里做检索、校验、替换、提取。常见场景包括:手机号/邮箱/身份证等格式校验、日志与文本解析、爬虫从网页中批量抽取链接或标签内容等。
    第 22 题简答题
    对比说明 re.matchre.searchre.findall 的匹配范围、返回值以及是否需要 .group()
    查看参考答案 ▼
    match:从字符串开头匹配,成功返回 Match 对象,失败 None,取内容用 .group()(需先判空)。search:在整串里找第一个匹配,返回值与 group 用法类似。findall:找所有匹配,通常返回字符串列表(或按分组规则返回元组列表),一般不再对单个结果调 .group()。
    第 23 题简答题
    什么是正则的"贪婪"与"非贪婪"?为什么爬虫抽取时往往要注意二者区别?
    查看参考答案 ▼
    贪婪:量词默认尽量多匹配;非贪婪:在量词后加 ? 尽量少匹配。爬虫里若模式写得太贪婪,可能一次吃掉过多 HTML,拿不到想要的每条细粒度内容;适当用非贪婪可一段段匹配标题、链接等。
    第 24 题简答题
    关系型数据库里"库、表、行、列"分别对应什么含义?各举一句生活类或商品类例子说明。
    查看参考答案 ▼
    库:一类业务的数据集合(如 shop)。表:同一类实体的二维表(如 goods 商品表)。行:表中的一条记录(如一件具体商品)。列:记录的属性字段(如 name、price)。例:goods 表一行就是一款商品,各列是它的名称、价格等。
    第 25 题简答题
    简述 DDLDMLDQL 各管什么,并各举一个关键字。
    查看参考答案 ▼
    DDL:定义数据库对象(库/表/列),如 CREATE、DROP、ALTER。DML:对表中数据行做增删改,如 INSERT、UPDATE、DELETE。DQL:查询数据,核心 SELECT。
    第 26 题简答题
    什么时候用 WHERE,什么时候用 HAVING?能否在 WHERE 里直接写 COUNT(*) > 5 这类条件?为什么?
    查看参考答案 ▼
    WHERE 在分组前过滤原始行。HAVING 在 GROUP BY 与聚合之后对分组结果再过滤,且 HAVING 中可以使用聚合函数。一般不能在 WHERE 里直接写 COUNT(*) > 5,因为 WHERE 阶段尚未完成分组聚合,聚合值尚未形成;课堂顺序常记为:WHERE → GROUP BY → 聚合 → HAVING。
    第 27 题简答题
    主键与外键有什么区别?外键约束带来的直接好处是什么?
    查看参考答案 ▼
    主键:本表内唯一标识一行,不可重复且非空。外键:本表某列取值须引用另一张表主键(或唯一键)已存在的值。好处是:保证引用完整性,减少"孤儿数据",让表间关系在插入/更新时由数据库强制检查。
    四、代码实战(5 题)
    第 28 题代码实战
    re 三种匹配方式对比(必做)
    准备同一长字符串(含重复关键词),分别调用 re.match、re.search、re.findall,打印返回值类型及内容。用注释说明:为何有些情况 match 得到 None 而 search 仍能匹配。
    查看参考答案 ▼
    import re s = "我学 Python,你也学 Python 吗?" p = "Python" m = re.match(p, s) print("match:", m) # None(开头不是 Python) sr = re.search(p, s) if sr: print("search:", sr.group()) # Python fa = re.findall(p, s) print("findall:", fa) # ["Python", "Python"]</span>
    第 29 题代码实战
    分组提取(必做)
    写一条正则,从示例串中提取区号和本地号码(如 010-12345678)。使用分组,通过 Match 的 group(0/1/2) 分别打印整段匹配、第一组、第二组。
    查看参考答案 ▼
    import re s = "客服电话:010-12345678" r = re.search(r"(\d{3,4})-(\d{6,8})", s) if r: print(r.group(0)) # 010-12345678 print(r.group(1)) # 010 print(r.group(2)) # 12345678
    第 30 题代码实战
    MySQL 建库建表与插入(必做)
    设计一张商品表(至少含:id 主键、name、price、category_id)。写出 CREATE TABLE(类型与约束合理)、至少 2 条 INSERT。
    查看参考答案 ▼
    CREATE TABLE goods ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL, price DECIMAL(10,2) NOT NULL, category_id INT UNSIGNED NOT NULL ); INSERT INTO goods (name, price, category_id) VALUES ("苹果", 5.50, 1); INSERT INTO goods (name, price, category_id) VALUES ("牛奶", 12.00, 2);
    第 31 题代码实战
    MySQL 单表条件、排序与分页(必做)
    基于上一题的表,写一条 SELECT:带 WHERE(如价格区间或分类)、ORDER BY、LIMIT 只取前几条。注释说明:无 WHERE 的 UPDATE/DELETE 在生产环境的风险。
    查看参考答案 ▼
    SELECT id, name, price FROM goods WHERE price BETWEEN 5 AND 20 ORDER BY price DESC LIMIT 10; -- 无 WHEREUPDATE/DELETE 易误伤全表,生产环境须谨慎
    第 32 题代码实战
    MySQL 两表关联查询(重点必做)
    再建一张分类表(id、category_name),商品表的 category_id 引用分类表 id。写一条多表 JOIN 查询:查出商品名、价格、分类名称。
    查看参考答案 ▼
    CREATE TABLE category ( id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, category_name VARCHAR(50) NOT NULL ); INSERT INTO category (id, category_name) VALUES (1, "水果"), (2, "乳品"); SELECT g.name, g.price, c.category_name FROM goods g JOIN category c ON g.category_id = c.id;