2019-06-25
一. 旷视科技
- 给定一个字符串,找出里面的特殊字符
解题思路:利用正则表达式-选择匹配方法,因为是找出所有的特殊字符,所以使用 findall() 方法
import re
def find_special_character():
info = input("请输入原始字符串信息:")
result = re.findall(".*?(\W)|_", info)
return result
if __name__ == "__main__":
result = find_special_character()
print(result)
结果:二、北京希瑞亚斯科技(Moka)
冒泡排序:
冒泡排序
Python
def bubble_sort(nums):
for i in range(len(nums) - 1): # 这个循环负责设置冒泡排序进行的次数
for j in range(len(nums) - i - 1): # j为列表下标
if nums[j] > nums[j + 1]:
nums[j], nums[j + 1] = nums[j + 1], nums[j]
return nums
if __name__ == "__main__":
nums = [4, 9, 1, 10 ,23, 19, 80, 49]
bubble_sort(nums)
print(nums)
二分查找
首先,假设列表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
def bin_search(data_list, val):
low = 0 # 最小数下标
high = len(data_list) - 1 # 最大数下标
while low <= high:
mid = (low + high) // 2 # 中间数下标
if data_list[mid] == val: # 如果中间数下标等于val, 返回
return mid
elif data_list[mid] > val: # 如果val在中间数左边, 移动high下标
high = mid - 1
else: # 如果val在中间数右边, 移动low下标
low = mid + 1
return # val不存在, 返回None
ret = bin_search(list(range(1, 10)), 3)
print(ret)
数据库操作
-
查询所有科目分数大于等于 70 的人,并输出平均分
分组查询和 where 结合使用, 这个感觉有点难度。首先你要筛选所有科目大于等于70 的人。这个要反逻辑思考,哪些人没在,再去掉这些人。
select name, avg(score) 平均分 from scores where (name not in (select name from scores where score<70)) group by name;
龙之门教育
判断 tomcat 服务器是否启动
ps -ef|grep java
此条命令具体含义
ps: 将某个进程显示出来
-A 显示所有程序。
-e 此参数的效果和指定"A"参数相同。
-f 显示UID,PPIP,C与STIME栏位。
grep命令是查找
判断 Nginx :ps -ef|grep nginx
jmeter 接口压力测试
这里先给到用 python django 框架快速搭建的一个接口,用的 IDEA 是 Pycharm。
django 安装自行百度,直接上接口代码,运行项目启动接口。
- 测试计划右键--添加--Threads(Users)--线程组(线程数就是并发数)
- 线程组右键--Sampler--HTTP 请求--填写域名或 IP、端口默认 8000(django 默认的接口是 8000),选择请求方式 post,填写 path 路径,配置请求体。这里切记路径后面要有 / .
- 添加断言:右键线程组--添加--断言-相应断言,可以选择断言类型。
例如: 测试字段-响应代码 模式匹配规则-相等 测试模式-200
请求响应结果只 为 200 则请求成功。 - 查看:右键线程组--添加--监听器--察看结果树(聚合报告)--点击上面的运行按钮,查看返回值
打印菱形
def draw_rhombus(side_len):
s = "*"
for i in range(1, side_len*2, 2):
print((s*i).center(side_len*2-1))
for i in reversed(range(1, side_len*2-2, 2)):
print((s * i).center(side_len*2-1))
if __name__ == '__main__':
draw_rhombus(5)
判断字符串是否是有效的ip(100.000.000~255.255.255)
import re
def judge_legal_ip(one_str):
"""
正则匹配方法:match() 从字符串的起始位置开始匹配,若起始位置不匹配则会直接返回 None
判断一个字符串是否是合法IP地址
"""
compile_rule = '[1-2][0-5]{2}.[0-2][0-5]{2}.[0-2][0-5]{2}$'
result = re.match(compile_rule, one_str)
if result is None:
print("False")
else:
print("True")
if __name__ == '__main__':
test_ip = ["122.234.155b", "a122.000.000", "011.111.222", "022.256.000",
"222.111.300", "222, 111,100", "122.000.000"]
for i in test_ip:
judge_legal_ip(i)
判断两个字典中不同的key及value
# 判断两个字典,若key不同,打印key及value;若key相同,value不同打印key及value
# value 可能同样是字典,同样需要判断key及value(递归)
def judge_dict(dict1, dict2):
# dict1 中不同的key
for key in dict1.keys():
if key not in dict2.keys():
print(key, dict1[key])
# dict2 中不同的key
for key in dict2.keys():
if key not in dict1.keys():
print(key, dict2[key])
else:
if dict1[key] != dict2[key]:
print(key, dict1[key], dict2[key])
if isinstance(dict1[key], dict) and isinstance(dict2[key], dict):
judge_dict(dict1[key], dict2[key])
if __name__ == '__main__':
dict11 = {'name': 'ni', 'city': 'tt', 'id': 2256, "address": {"province": "河北", "city": "石家庄"}}
dict22 = {'name': 'ni', 'city': 'tt', 'id': 225633, "sex": 1, "address": {"province": "河北", "city": "邯郸",
"country": "西陆开"}}
judge_dict(dict11, dict22)
58同城
查看端口是否占用
netstat -anp |grep 8080
若显示 listen 表示被使用
[root@iZ2ze5m0y26ihszxox3engZ ~]# netstat -anp |grep 8080
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 13954/java
查看日志命令
tail -f filename会把文件里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容
- 输出最后的100个字符
[root@peipei3514 usr]# tail -c 100 test.log
018-09-15 15:56:10:725 THERP
199 2018-09-16 15:57:16:725 DWMTJ
200 2018-09-17 15:58:13:725 PHKIZ
- 从第6500个字符开始输出,一直到最后
[root@peipei3514 usr]# tail -c +6500 test.log
RBZDP
190 2018-09-07 15:48:11:724 PFMXT
191 2018-09-08 15:49:15:724 MWPPA
192 2018-09-09 15:50:06:724 UWRQM
193 2018-09-10 15:51:06:724 KOKZL
194 2018-09-11 15:52:22:724 WDKSI
195 2018-09-12 15:53:16:724 UXTIP
196 2018-09-13 15:54:06:724 XXTYN
197 2018-09-14 15:55:12:725 KWUAX
198 2018-09-15 15:56:10:725 THERP
199 2018-09-16 15:57:16:725 DWMTJ
200 2018-09-17 15:58:13:725 PHKIZ
- 输出最后的5行
[root@peipei3514 usr]# tail -n 5 test.log
196 2018-09-13 15:54:06:724 XXTYN
197 2018-09-14 15:55:12:725 KWUAX
198 2018-09-15 15:56:10:725 THERP
199 2018-09-16 15:57:16:725 DWMTJ
200 2018-09-17 15:58:13:725 PHKIZ
- 从第196行开始输出,一直到最后
[root@peipei3514 usr]# tail -n +196 test.log
196 2018-09-13 15:54:06:724 XXTYN
197 2018-09-14 15:55:12:725 KWUAX
198 2018-09-15 15:56:10:725 THERP
199 2018-09-16 15:57:16:725 DWMTJ
200 2018-09-17 15:58:13:725 PHKIZ
- 输出指定文件的最后十行,同时继续监视文件内容有无变化,新增内容会继续输出,直到按下 [Ctrl-C] 组合键停止该命令
[root@peipei3514 usr]# tail -f test.log
191 2018-09-08 15:49:15:724 MWPPA
192 2018-09-09 15:50:06:724 UWRQM
193 2018-09-10 15:51:06:724 KOKZL
194 2018-09-11 15:52:22:724 WDKSI
195 2018-09-12 15:53:16:724 UXTIP
196 2018-09-13 15:54:06:724 XXTYN
197 2018-09-14 15:55:12:725 KWUAX
198 2018-09-15 15:56:10:725 THERP
199 2018-09-16 15:57:16:725 DWMTJ
200 2018-09-17 15:58:13:725 PHKIZ
- 指定多个文件并输出文件名
[root@peipei3514 usr]# tail -v test.log test2.log
==> test.log <==
191 2018-09-08 15:49:15:724 MWPPA
192 2018-09-09 15:50:06:724 UWRQM
193 2018-09-10 15:51:06:724 KOKZL
194 2018-09-11 15:52:22:724 WDKSI
195 2018-09-12 15:53:16:724 UXTIP
196 2018-09-13 15:54:06:724 XXTYN
197 2018-09-14 15:55:12:725 KWUAX
198 2018-09-15 15:56:10:725 THERP
199 2018-09-16 15:57:16:725 DWMTJ
200 2018-09-17 15:58:13:725 PHKIZ
==> test2.log <==
391 2019-03-27 22:00:38:800 GKAVS
392 2019-03-28 22:01:39:801 FZZQO
393 2019-03-29 22:02:36:801 SMEUF
394 2019-03-30 22:03:34:801 SMKWL
395 2019-03-31 22:04:35:801 VIADG
396 2019-04-01 22:05:24:801 VRGTH
397 2019-04-02 22:06:27:801 GDPIV
398 2019-04-03 22:07:30:801 WDEWY
399 2019-04-04 22:08:27:802 MXKMM
400 2019-04-05 22:09:42:802 EMIYR
- 指定多个文件不输出文件名
[root@peipei3514 usr]# tail -q test.log test2.log
191 2018-09-08 15:49:15:724 MWPPA
192 2018-09-09 15:50:06:724 UWRQM
193 2018-09-10 15:51:06:724 KOKZL
194 2018-09-11 15:52:22:724 WDKSI
195 2018-09-12 15:53:16:724 UXTIP
196 2018-09-13 15:54:06:724 XXTYN
197 2018-09-14 15:55:12:725 KWUAX
198 2018-09-15 15:56:10:725 THERP
199 2018-09-16 15:57:16:725 DWMTJ
200 2018-09-17 15:58:13:725 PHKIZ
391 2019-03-27 22:00:38:800 GKAVS
392 2019-03-28 22:01:39:801 FZZQO
393 2019-03-29 22:02:36:801 SMEUF
394 2019-03-30 22:03:34:801 SMKWL
395 2019-03-31 22:04:35:801 VIADG
396 2019-04-01 22:05:24:801 VRGTH
397 2019-04-02 22:06:27:801 GDPIV
398 2019-04-03 22:07:30:801 WDEWY
399 2019-04-04 22:08:27:802 MXKMM
400 2019-04-05 22:09:42:802 EMIYR
轻松筹
给一个集合 a= [1, 3, 8, 2, 1, 9, 4, 2],去除里面的重复元素
方法1 利用 set 的特性,不能有重复值
>>> a = [1, 3, 8, 2, 1, 9, 4, 2]
>>> a = set(a)
>>> a
{1, 2, 3, 4, 8, 9}
方法二 直接写个方法条件判断
def solution(ns: List):
temp = []
for i in ns:
if i not in temp:
temp.append(i)
return temp