美文网首页
面试总结

面试总结

作者: 浪花三朵 | 来源:发表于2019-06-27 12:19 被阅读0次

2019-06-25

一. 旷视科技

  1. 给定一个字符串,找出里面的特殊字符
    解题思路:利用正则表达式-选择匹配方法,因为是找出所有的特殊字符,所以使用 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)
结果: special_character.PNG

二、北京希瑞亚斯科技(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)
数据库操作
  1. 查询所有科目分数大于等于 70 的人,并输出平均分


    scores.PNG

    分组查询和 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 安装自行百度,直接上接口代码,运行项目启动接口。

  1. 测试计划右键--添加--Threads(Users)--线程组(线程数就是并发数)
  2. 线程组右键--Sampler--HTTP 请求--填写域名或 IP、端口默认 8000(django 默认的接口是 8000),选择请求方式 post,填写 path 路径,配置请求体。这里切记路径后面要有 / . QQ图片20191220110819.png
  3. 添加断言:右键线程组--添加--断言-相应断言,可以选择断言类型。
    例如: 测试字段-响应代码 模式匹配规则-相等 测试模式-200
    请求响应结果只 为 200 则请求成功。
  4. 查看:右键线程组--添加--监听器--察看结果树(聚合报告)--点击上面的运行按钮,查看返回值

打印菱形

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)
image.png

判断两个字典中不同的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)

image.png

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会把文件里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容

  1. 输出最后的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
  1. 从第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
  1. 输出最后的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
  1. 从第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
  1. 输出指定文件的最后十行,同时继续监视文件内容有无变化,新增内容会继续输出,直到按下 [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
  1. 指定多个文件并输出文件名
[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
  1. 指定多个文件不输出文件名
[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

相关文章

网友评论

      本文标题:面试总结

      本文链接:https://www.haomeiwen.com/subject/ohcccctx.html