# # 函数式编程
# from functools import reduce
# a = (lambda x, y: x*y)(3, 4)
# print(a)
# # 返回一个可迭代对象
# res = map(lambda x: x ** 2, [1, 2, 3, 4, 5])
# for r in res:
# print(r)
# # 后面添加过滤条件
# X = filter(lambda x: x < 0, range(-5, 5))
# for x in X:
# print(x)
# # 有点递归的意思
# red = reduce(lambda x, y: x*y, [1, 2, 3, 4, 5])
# print(red)
# 1.一行代码实现1-100之和
# f = 0
# 2.函数内修改全局变量
# def change_f():
# nonlocal f
# f += 1
# print(f)
# change_f()
# 3.列出5个python标准库字典
# 4.如何删除键和合并两个字典
# d1 = {"k1": "v1", "a1": "b1"}
# d2 = {"k2": "v2", "a2": "b2"}
# d1.pop("k1")
# 5.谈下python的GIL锁:和python的多线程有关,每次放一个进程中的一个线程去操作硬件资源核心,所以多线程对于多核是没有用的
# 6.python实现列表去重
# l = [1, 2, 3, 3, 4, 4]
# a = set(l)
# print(list(a))
# 7.*args和**kwargs分别是什么意思:*args是可变参数返回一个元祖,**kwargs返回一个字典
# 8.python2和python3的range(100)的区别:
# 9.一句话解释什么样的语言能用装饰器:函数为一等公民,函数可以作为参数传入,也可以作为返回值
# 10.python内建数据结构:list、tuple、dict、set 內建数据类型:int string、float、bool
# 11.简述__new__ 和 __init__的区别:new是用来分配类(对象)的内存,init是构造函数用来初始化一些变量
# 12.简述with方式打开文件帮我们做了什么:申请内存空间,open一个文件,最后释放资源
# 13.列表[1,2,3,4,5],请使用map()函数输出[1,,4,9,16,25],并使用推导式提取其中大于10的数
# m = map(lambda x: x ** 2, [1, 2, 3, 4, 5])
# res = [x for x in m if x > 10]
# print(res)
# 14.python中生成随机整数、随机小数、0-1之间的小数的方法
import re
import time
import datetime
import os
import collections
import random
from functools import reduce
# 0-1之间的小数
# i = random.random()
# print(i)
# 随机整数
# i = random.randint(1, 100)
# print(i)
# 随机小数?
# 15.避免转义给字符串加哪个字母表示原始字符串
# 16.<div class="name">中国</div>正则表达式取出"中国",其中class类名不确定
# import re
# pos = "<div class='name'>中国</div>"
# re.compile(pos)
# r = re.sub(r"\D", "", pos)
# print(r)
# 17.python中断言方法举例:assert
# a = 1
# assert type(a) == int # 断言正确就继续执行
# 18.数据表student中有id、name、score、、city字段、其中name中名字有重复、需要消除重复,请写出SQL语句 select name from student
# 19.10个linux常用命令:ls 、ps -aux | grep 、echo 、pwd 、mkdir 、touch 、vim 、netstat -anpt、tar -zxvf、 make make install、unzip、ll、cat、man、systemctl、yum、apt、wget
# 20.python2和python3的区别:类object 、utf-8、.format
# 21.列出python中可变数据类型和不可变数据类型:string,int,tuple是不可变数据类型复制或修改需copy一份 list、dict、set等都是可变的,类似于引用类型,存的是指针
# 22.s = "ajldjlajfdljfddd" 去重并从大到小排序输出"adfjl"
# s = "ajldjlajfdljfddd"
# x = [i for i in s]
# res = set(x)
# l = list(res)
# l.sort()
# 里面放的就是列表元素
# print("".join(l))
# 23.用lambda表达式实现两数相乘
# res = (lambda x, y: x*y)(2, 3)
# print(res)
# 24.字典根据键从小到大排序, 其实本身还有一个排序的方法
# a = {"name": "cui", "age": 21, "city": "烟台"}
# res = sorted(a)
# print(res)
# 25.利用collections库中的counter方法统计字符串出现的次数
# a = "kjaskdhfhqehfuiuirfiuuahyqaygyvadsasdhfsadhfafuiguqewfuuqefvuqevuqfiqevqiuegrvge"
# c = collections.Counter(a)
# print(c.most_common(5))
# 26.字符串过滤掉空格英文和数字输出汉字?
# a = "not 404 found fs sdf fs dfs 崔贺然 faafda 烟台"
# 27.列表推导式求出列表所有奇数并构造新列表
# a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 注意取余数时的边界数处理,
# res = [i for i in a if (i+4) % 2 == 1]
# print(res)
# 28.filter方法求奇数
# a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# res = filter(lambda x: (x+2) % 2 == 1, a)
# for i in res:
# print(i)
# 29.正则表达式re.complie的作用,预编译,提高性能
# 30.a=(1,) b= (1), c=("1")分别是什么类型数据:a是元祖,b是int,c是string
# a = (1,)
# b = (1)
# c = ("1")
# print(type(a))
# print(type(b))
# print(type(c))
# 31.两个列表合并
# a1 = [1, 5, 7, 9]
# a2 = [2, 2, 6, 8]
# print(sorted(a1+a2))
# 32.用python删除文件的用法和linux删除文件的用法
# os.remove("test/day2/tempCodeRunnerFile.py")
# 33.log日志中需要时间戳纪录err发生的时间,请用datetime模块打印时间戳
# print(time.time())
# 34.数据库优化查询的方法:分库分表、建立索引、缓存
# 35.列出统计图库:pyecharts、pymatplib、ant.js
# 36.写一段自定义的异常代码
# class NetworkError(Exception):
# pass
# class HostNameError(NetworkError):
# pass
# try:
# print("xxx")
# except HostNameError as e:
# print("!!!")
# 37.正则表达式中. 和.?匹配到的区别:贪婪费贪婪?
# 38.简述Django的ORM:其实Django的ORM很复杂,用到了元类编程,类比与Java的Mybitis和golang的GORM,Django的ORM虽然没有SQLAclmy强大
# 但是也是做的非常的额优秀了,Object Relative Mapping 对象关系映射,结构类似将数据库中的表映射成类名,将成员变量映射成字段
# 39.一行代码展开列表
# a = [[1, 2], [3, 4], [5, 6]]
# l = reduce(lambda x, y: x+y, a)
# print(l)
# 40.分别求出join()的结果,本质是将y、z进行循环
# y = "def"
# z = ["d", "e", "f"]
# x = "abc"
# print(x.join(y))
# print(x.join(z))
# 41.try except else finally含义:try就是执行一下,如果有什么异常except捕获一下,else否则xxx,finally最后默认执行什么操作
# 42.py交换两数
# 43.举例说明zip的用法
# a = [1, 2, 3]
# b = [4, 5, 6]
# for i, j in zip(a, b):
# print(i ,j)
# 44.a = "张明 98分", 用re.sub将98替换为100?
# a = "张明 98分"
# res = re.sub("\d", "100", a)
# print(res)
# 45.写出5条常用的SQL:select * from xxx, select * from xxx where id 666,selete name from xxx where id >100
# 46.a = "hello" 和 b = "你好" 编码成bytes类型
# a = "hello"
# b = "你好"
# print(bytes(a.encode('utf-8')))
# print(bytes(b.encode('utf-8')))
# 47.[1,2,3]+[4,5,6]结果为[1,2,3,4,5,6]
# 48.提高python运行效率的方法:cython, dict递归优化、join、迭代器、列表生成式、pypy、多进程+协程、合理使用数据结构与算法
# 49.简述mysql和redis的区别:RDBMS和cache,先说单体吧,mysql用于数据的存储,redis用于缓存,mysql底层索引为b+tree,5.5后默认引擎为innodb
# innodb支持事务:ACID原子性、一致性、持久性、隔离性,支持外键、支持行级锁、1to1(用于扩展) 1toM(外键) MtoM(中间表纪录id的对应关系)主键索引外键约束
# b+tree可以存储4000w条数据可以计算出来,3层树高,不用回表,索引的也比较快,因为存储了叶子节点和数据
# redis:RDB和AOF一个是快照,一个是日志形式支持持久化,几种数据结构,在微博中经常使用,购物车的实现有序集合用的跳表为什么不用红黑树
# 通常用作session的存储,因为在分布式环境下,不同的服务器对应你的状态不同,基于负载均衡的情况下,避免重复登录的情况下通常使用redis存储token或者session、JWT
# redis的分布式锁问题,在高并发的情况下扣库存问题,需要redis分布式的框架java的Jedis, python的xxxx-redis,golang的redigo
# mysql集群也有讲究:最基本的是主从复制做读写分离,manage用来写操作,为innodb引擎,从表为读表用mysims引擎,主的状态更新同步给从,还有一些中间件
# 50.遇到bug如何处理:分析逻辑、Debug、打日志、stackoverflow、google
# 51.正则表达式匹配时间:
# 52.排序list从小到大,不许用sort
# l = [3, 4, 6, 2, 1, 5]
# 53.写一个单例模式
# class Singleton:
# def __new__(self):
# super().__init__(self, Sing)
# 54.保留两位小数
# 55.求三个方法打印结果
# 56.列出常见的状态码和意义:404 页面无法找到 403 无权访问 302 临时重定向 500 服务端错误 200 OK
# 57.分别从前端、后端和、数据库阐述web项目的性能优化:前端编译懒加载CDN缓存,后端分治思想、缓存、异步,数据库:拆、cache!
# 58.使用pop和del删除字典中的name字段
# dic = {"name": "zs", "age": 18}
# dic.pop("name")
# del dic["name"]
# print(dic)
# 59.列出常见的MySQL数据存粗引擎:innodb、mysims、memery、等
# 60.zip函数的使用
# l1 = ["a", "b", "c", "d", "e"]
# l2 = [1, 2, 3, 4, 5]
# res = [(i, j) for i, j in zip(l1, l2)]
# print(res)
# 61.简述浏览器的同源则略:协议、ip、端口有一项不同就默认为不同源
# 62.简述cookie和session的区别:cookie是基于浏览器的技术,也是一个dict类型,客户端都没有,存储一些浏览纪录缓存信息等
# session是基于服务端的回话技术,用于会话保持,cookie存储sessionid,用来登录状态的保持业务逻辑,也可以用token
# 63.简述多线程、多进程:进程是资源分配的最小单位,线程是资源调度的最小单位,线程不能依托于进程单独存在,多线程的存在也是提高资源利用的一种手段
# 进程之间相互隔离,为线程提供了环境,进程间多个线程共享变量,线程之间可以用queue进行通信,进程之间通过信号量,消息队列等方式进行通信
# 64.any() 和all()方法
# 65.各种异常代表的含义
# 66.深浅拷贝的区别:浅拷贝只是多了个引用指向他,深拷贝会递归的进行拷贝
# 67.几种魔法方法的用途:new用于分配内存、init用与初始化、dict查看类的一些信息、call可以被调用get、set方法类似java
# 68.生成器
# 69.去除首尾空格
# a = " hehe "
# res = re.sub("", " ", a)
# print(res)
# 71.举例sort和sorted对list的排序
# 72.对list排序,使用lambda函数?
# foo = [4,3,5,7,3,2,-2,-7]
# res = lambda foo: foo.sort, foo
# 73.列表嵌套字典,分别根据年龄和姓名排序?
# 74.列表嵌套元组,分别按照字母和数字排序
# 75.根据键对字典排序,用zip和不用zip
# 76.列表推导式、字典推导式、生成器
# res = (i for i in range(10))
# for j in res:
# print(j)
# 77.举例说明SQL注入和解决办法,不要用拼接,or 1 ==1,利用or进行拼接
# 78.用正则表达式切分字符串 s = "info:xiaoZhang 33 shandong"
# 79.正则表达式匹配以163.com结尾的邮箱
# "(.*)163.com$"
# 80.递归求和以及优化
# 81.python中dict和json相互转换
# import json
# dic = {"name": "cui", "age": 21}
# res = json.dumps(dic)
# print(res)
# 82.myisam 和innodb的区别:略
# 83.统计某字符串出现的次数
# 84.字符串转换大小写:lower
# 85.两种方式去空格
# 86.正则匹配不是以4和7结尾的手机号
# 87.简述python的引用计数机制:当对象被引用的标记为0时就会被清除,被引用一次就+1
# 88.3条以上PEP8规范
# 89.正则匹配中文
# 90.乐观锁和悲观锁:读写锁
# 91.打开模式的区别
# 92.linux的> 和>>的区别
# 93.python是传值还是传址
# 94.两个列表的交集 并集 差集
# 95.生成0-100的随机数:略
# 96.lambda表达式的优势:性能高
# 97.垃圾回收机制:引用技术、标记清除、分代回收
# 98.get和post区别
# 99.search和match的区别
# 100.python读取execl方法
历经4小时刷的100道面试题,每道题背后都可以讲一篇文章的
最新推荐文章于 2024-10-18 00:00:00 发布