历经4小时刷的100道面试题,每道题背后都可以讲一篇文章的

# # 函数式编程
# 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方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值