day39 第一阶段前端和数据库考试解析

语法基础阶段第二次考试
一.笔试部分

  1. 请列出5个HTML标签以及它们的属性,每个标签至少写出2个属性(id、class、title、style、lang、dir、tabindex属性除外)。(10分)
    答:a 标签(href和target属性)、form标签(method和action属性)、img标签(src和alt属性)、input标签(type和readonly属性)、audio标签(autoplay和controls属性)、……

  1. 写出如何引入外部样式表并解释层叠样式表盒子模型(Box Model)是什么。(10分)

答:当对一个文档进行布局的时候,浏览器渲染引擎会根据盒子模型将所有元素表示为一个矩形盒子,盒子的属性决定这些盒子的大小,位置以及属性(颜色,背景,边框尺寸等),如下图所示。

<link rel="stylesheet" href="..." type="text/css">

16627003-80011f182501724c.png
image.png

  1. Linux系统下安装新的软件包有哪些方式,请详细说明。(10分)
    答:
    方式一:使用包管理工具yum进行安装,如:
yum install nginx

方式二:使用包管理工具rpm进行安装,如:

rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm

方式三:源代码构建安装,先下载软件包的源代码,然后使下面的命令进行构建安装:

make && make install


netstat -nap | grep 1234
kill 对应的进程号
netstat -nap | grep 1234 | awk '{print $7}' | cut -d / -f 1 | xargs kill

  1. Linux系统下知道某个进程占用了1234端口,写出找到这个进程并结束它的命令。(10分)
    答:
    方法一:
netstat -nap | grep kill 对应的进程号

方法二:

netstat -nap | grep 1234 | awk '{print $7}' | cut -d / -f 1 | xargs kill

  1. 请说明在vim中如何执行下面的操作。(10分)
    答:
命令模式下输入: 100G50dd
命令模式下输入: :1,$s/from/form/g

二.机试部分

  1. 如下所示的页面上,写出点击OK按钮删除id为foo的div标签以及将id为bar的标签背景色修改为蓝色所需的JavaScript代码(不能对页面标签本身做任何改动,只能编写JavaScript代码且不允许使用jQuery或其他三方库)。(10分)

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="utf-8">
 <title>考试题</title>
</head>
<body>
 <div>
 <div id="foo"></div>
 <div id="bar"></div>
 <button>OK</button>
 </div>
 <script>
 // Todo: 请在此处添加你的代码
 const fooDiv = document.querySelector('#foo')
 const barDiv = document.querySelector('#bar')
 const okBtn = document.querySelector('#bar+button')
 okBtn.addEventListener('click', (evt) => {
 fooDiv.parentNode.removeChild(fooDiv)
 barDiv.style.backgroundColor = 'blue'
 })
 </script>
</body>
</html>

16627003-af67b00994886b16.png
image.png

def calc_score(jump_list):
 # Todo: 在此处添加你的代码
 total, center_point = 0, 2
 for value in jump_list:
 if value:
 total += center_point
 center_point += 2
 else:
 total += 1
 center_point = 2
 return total
def main():
 list1 = [True, False, False, True, True, True]
 list2 = [True, True, True, True, False, True, True]
 list3 = [False, False, True, True, True, True, True, False]
 print(calc_score(list1)) # 16
 print(calc_score(list2)) # 27
 print(calc_score(list3)) # 33
 
if __name__ == '__main__':
 main()


  1. 设计一个函数,输入年、月、日,输出该日期是这一年的第几天。(10分)
def is_leap(year):
 return (year % 4 == 0 and year % 100 != 0) or year % 400 == 0
def day_of_year(year, month, date):
 # Todo: 在此处添加你的代码
 days_of_month = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30]
 total = 0
 for index in range(month):
 total += days_of_month[index]
 total += date
 return total + 1 if is_leap(year) and month > 2 else total
def main():
 print(day_of_year(1980, 11, 28)) # 333
 print(day_of_year(1981, 1, 1)) # 1
 print(day_of_year(1982, 12, 31)) # 365
 
if __name__ == '__main__':
 main()
16627003-c141e6d2d1128e11.png
image.png

import pymysql
def get_user_data(page, size, conn):
-- 如果存在名为sharebike的数据库就删除它
drop database if exists sharebike;
-- 创建名为sharebike的数据库并指定默认的字符集为utf-8
create database sharebike default charset utf8;
-- 切换到sharebike数据库的上下⽂环境
use sharebike;
-- Todo: 在此处添加你的代码
create table tb_user
(
 userid int auto_increment,
 nickname varchar(20) not null,
 tel char(11) not null,
 city varchar(20) not null,
 regdate datetime not null,
 primary key (userid)
);
alter table tb_user add constraint uni_user_tel unique (tel);
create table tb_bike
(
 bikeid int auto_increment,
 status enum('使用', '闲置', '维修') default '闲置',
 isbroken bit default 0,
 primary key (bikeid)
);

create table tb_record
(
 recid int auto_increment,
 userid int not null,
 bikeid int not null,
 begintime datetime not null,
 endtime datetime,
 payway enum('⽀付宝', '微信', '其他'),
 fee float,
 primary key (recid),
 foreign key (userid) references tb_user (userid),
 foreign key (bikeid) references tb_bike (bikeid) 
);

  1. 在上一题的基础上,基于三⽅库pymysql设计⼀个⽤于分⻚查询⽤户数据的函数。(10分)
    );


import pymysql
def get_user_data(page, size, conn):
 """
 查询用户表, 返回多个元组,该元组包含了总数和当前页用户数据的列表
 
 :param page 当前页码
 :param size 页面大小
 :param conn 数据库连接对象
 
 :return tuple(total: int, data: list(dict))
 """
 # Todo: 在此处添加你的代码
 with conn.cursor(cursor=pymysql.cursors.DictCursor) as cursor:
 cursor.execute(
 'select * from tb_user limit %s offset %s',
 (size, (page - 1) * size)
 )
 data = cursor.fetchall()
 cursor.execute('select count(*) as total from tb_user')
 total = cursor.fetchone()['total']
 total_page = (total - 1) // size + 1
 return (total_page, data)
def main():
 conn = pymysql.connect(host='120.77.222.217', port=3306,
 user='root', password='123456',
 database='sharebike', charset='utf8')
 try:
 print(get_user_data(1, 5, conn))
 finally:
 conn.close()
 
if __name__ == '__main__':
 main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值