语法基础阶段第二次考试
一.笔试部分
- 请列出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属性)、……
- 写出如何引入外部样式表并解释层叠样式表盒子模型(Box Model)是什么。(10分)
答:当对一个文档进行布局的时候,浏览器渲染引擎会根据盒子模型将所有元素表示为一个矩形盒子,盒子的属性决定这些盒子的大小,位置以及属性(颜色,背景,边框尺寸等),如下图所示。
<link rel="stylesheet" href="..." type="text/css">
- 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
- Linux系统下知道某个进程占用了1234端口,写出找到这个进程并结束它的命令。(10分)
答:
方法一:
netstat -nap | grep kill 对应的进程号
方法二:
netstat -nap | grep 1234 | awk '{print $7}' | cut -d / -f 1 | xargs kill
- 请说明在vim中如何执行下面的操作。(10分)
答:
命令模式下输入: 100G50dd
命令模式下输入: :1,$s/from/form/g
二.机试部分
- 如下所示的页面上,写出点击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>
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()
- 设计一个函数,输入年、月、日,输出该日期是这一年的第几天。(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()
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)
);
- 在上一题的基础上,基于三⽅库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()