返回顶部

面试1

1 python如何进行内存管理的?

1小整数对象池,Python 对小整数的定义是 [-5, 257) 这些整数对象是提前建立好的,不会被垃圾回收。

2 大整数对象池,每一个大整数,均创建一个新的对象。

3 intern机制,单个单词,不可修改,默认开启intern机制,共用对象,引用计数为0,则销毁

4垃圾回收:引用计数机制,每次创建一个对象或者其他什么值的时候,python会将其加入零代链表,在这个过程中,把循环引用减1,为0的释放,不为0的放到1代链表。然后在1代链表中,把循环引用减1,为0的释放,不为0的放到2代链表中

2 dict 的items()方法与iteriterms()方法的不同?

items()返回的是列表对象,而iteritems()返回的是iterator对象

3 python 如何生成随机数

生成随机数可以用random模块,通过random.randint()用于生成

4 redis的并发竞争问题如何解决?

1.客户端角度,为保证每个客户端间正常有序与Redis进行通信,对连接进行池化,同时对客户端读写Redis操作采用内部锁synchronized。

2.服务器角度,利用setnx实现锁。

3在并发量过大的情况下,可以通过消息中间件进行处理,把并行读写进行串行化.这种方式在一些高并发的场景中算是一种通用的解决方案,简单的方式可以通过redis的list实现,

5 git冲突的解决方法?

方法一:如果我们确定远程的分支正好是我们需要的,而本地的分支上的修改比较陈旧或者不正确,那么可以直接丢弃本地分支内容,运行如下命令(看需要决定是否需要运行git fetch取得远程分支):

$:git reset --hard origin/master

方法二:我们不能丢弃本地修改,因为其中的某些内容的确是我们需要的,此时需要对unmerged的文件进行手动修改,删掉其中冲突的部分,然后运行如下命令

$:git add filename

 

$:git commit -m "message"

方法三:如果我们觉得合并以后的文件内容比价混乱,想要废弃这次合并,回到合并之前的状态,那么可以运行如下命令:

$:git reset --hard HEAD

6 django和tornado的关系和区别?

djaingo用于创建模型的对象关系映射,为最终用户设计的完美管理界面一流的 URL 设计,包含大而全的开发组件,它鼓励快速开发,并遵循MVC设计。

 

Tornado 和现在的主流 Web 服务器框架(包括大多数Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其 非阻塞的方式和对epoll的运用,Tornado 每秒可以处理数以千计的连接,这意味着对于实时 Web服务来说,Tornado 是一个理想的 Web 框架

7 beautifulsoup有几种方式查找(爬虫的)?

1
2
3
4
5
6
7
8
9
10
11
12
find()
find_all()
find_parent()
find_parents()
find_next_sibling()
find_next_siblings()
find_previous_sibling()
find_previous_siblings()
find_previous()
find_all_previous()
find_next()
find_all_next()

8 请写出一段python代码实现删除一个list里面的重复元素(不用set函数)

1
2
3
a = ['a', 'b', 'c', 'd', 'a', 'a']
b = []
[b.append(i) for i in a if i not in b ]

9深拷贝浅拷贝赋值的区别?

Python中对象的赋值都是进行对象引用(内存地址)传递

使用copy.copy(),可以进行对象的浅拷贝,它复制了对象,但对于对象中的元素,依然使用原始的引用.

如果需要复制一个容器对象,以及它里面的所有元素(包含元素的子元素),可以使用copy.deepcopy()进行深拷贝

10 python中pass语句的作用是什么?

空语句 do nothing

保证格式完整

保证语义完整

11 python 里面match()和search()的却别?

match()从第一个字符开始找,如果第一个就不匹配,会直接返回None,不继续匹配.主要用于匹配开头

search()会在整个字符串中查找,直到找到一个匹配的

12 python 单引号,双引号和三引号的区别?

python字符串通常有单引号('...')、双引号("...")、三引号("""...""")或('''...''')包围,三引号包含的字符串 可由多行组成,一般可表示大段的叙述性字符串。在使用时基本没有差别,但双引号和三引号("""...""")中可以包含单引号,三引号 ('''...''')可以包含双引号,而不需要转义

13 请用自己的算法,按升序合并如下两个list,并去除重复的元素

         List1 = [2,3,8,4,9,5,6] list2= [5,6,10,17,11,2]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
list1 = [2,3,8,4,9,5,6]
list2 = [5,6,10,17,11,2]
 
list3 = list1+list2
li = []
for i in list3:
    if i in li:
        continue
         
    if i not in li:
        li.append(i)
        continue
    if li[0] >i:
        li.insert(0,i)

14 关系型数据库中,表与表之间有左连接,内连接,外连接、分别解释下他们的含义及却别?

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录

right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录

inner join(等值连接) 只返回两个表中联结字段相等的行

15 有订单表orders,包含用户信息user_id和产品信息product_id请写出至少被订购过两次的product_id?

1
select productid from orders group by productid having count(productid)>1

16 抓了a,b,c,d四名嫌疑人,其中一名是小偷,审讯中:

         A说我不是小偷

         B 说c是小偷

         C 说小偷肯定是d

         D说c胡说

         其中3个人说的是真的,一个说的是假的,编程推断小偷(用穷举法和逻辑表达式)

1
2
3
4
5
for i in range(4):
    y = (i!=1) + (i==3) +(i==4)+(i!=4)
    if y==3:
        print("%s是小偷"%i)
        break

17 redis中的事务和mysql中的事务有什么区别?

 

mysql

redis

开启事务

start transaction命令

multi命令

回滚事务

使用rollback命令可以回滚事务

不能回滚事务。但使用discard命令可以放弃事务queue中的sql

提交事务

commit命令,即使遇到sql语法错误也会提交事务

exec命令,如果遇到sql语法错误会放弃事务中的sql

悲观锁

使用select ... for update实现悲观锁

乐观锁

通常使用version或时间戳来实现乐观锁

使用watch监控对象变化来实现乐观锁

原子性(Atomicity)

具备

具备

一致性(Consistency)

具备

具备

隔离性(Isolation)

具备

具备

持久性(Durability)

具备

当redis服务器使用AOF持久化模式并appendfsync设置为always时具备

  

18解释下Http协议

HTTP是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。

HTTP协议的主要特点可概括如下:

1.支持客户/服务器模式。

2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

19介绍一下Python下range()函数的用法?

列出一组数据,经常用在for in range()循环中

20 HTTPS和HTTP的区别主要如下:

1、https协议需要申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

21有一个文本文件,有10万行数据,只输出最后20行 

1
tail -n 20 filename

22简述mysql存储引擎MyISAM和InnoDB的区别

1 MyISAM管理非事务表。提供高速存储和检索,以及全文搜索能力

2 InnoDB和存储引擎支持事务安全表,支持外键。

23 为什么Python中使用多线程会引起性能的下降

Python由于有全锁局的存在(同一时间只能有一个线程执行),并不能利用多核优势。所以,如果你的多线程进程是CPU密集型的,那多线程并不能带来效率上的提升,相反还可能会因为线程的频繁切换,导致效率下降;如果是IO密集型,多线程进程可以利用IO阻塞等待时的空闲时间执行其他线程,提升效率。 

 

24 HTTPS 是如何实现安全传输数据的。

HTTPS 其实就是在 HTTP 跟 TCP 中间加多了一层加密层 TLS/SSL。SSL 是个加密套件,

负责对 HTTP 的数据进行加密。TLS 是 SSL 的升级版。现在提到 HTTPS,加密套件基本

指的是 TLS。原先是应用层将数据直接给到 TCP 进行传输,现在改成应用层将数据给到

TLS/SSL,将数据加密后,再给到 TCP 进行传输。

25 HTTP 请求会有哪些信息发送到后台服务器。

请求行 (请求方式、资源路径和 HTTP 协议版本)POST /demo/login HTTP/1.1

请求消息头

消息正文(也叫实体内容)

26 合并两个列表

ks = [1,2,3,4,5]

vs = ['a','b','c','d','e']

c = dict(zip(ks, vs))
print(c)

27 自定义函数排序

复制代码
import re


li = ['班级11','班级21','班级3','33班','21教学楼','4班','2']

print(sorted(li, key=lambda x:int(re.findall(r'\d+', x)[0])))

def sort_key(s):
    if s:
        try:
            c = re.findall(r'\d+', s)[0]
        except:
            c = -1
        return int(c)

print(sorted(li, key=sort_key))  # 具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序

'''
接受3个参数 1 一个可迭代的对象 2 一个函数具体的是对指定的可迭代对象中的一个元素进行排序 3 是否反转(bool)
'''
复制代码

 

 

 

 

 

posted @   Crazymagic  阅读(209)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示

目录导航