程序员

【面试题】花3个小时整理的朋友在深圳面试Python岗位的题

作者:admin 2021-08-16 我要评论

1.请写出一段 python 代码实现删除一个 list 里面的重复元素 ? 方法一利用 Set 集合去重实现。 ? 1. l1 [b,c,d,b,c,a,a] 2. l2 list(set(l1)) 3. l2.sort(keyl1....

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

1.请写出一段 python 代码实现删除一个 list 里面的重复元素

?
方法一:利用 Set 集合去重实现。
?
1. l1 = ['b','c','d','b','c','a','a'] 
2. l2 = list(set(l1)) 
3. l2.sort(key=l1.index) 
4. print l2
方法二:使用字典函数。
?
方法三:用 append 方法实现。
?
1. def delList(L): 
2. L1 = [] 
3. for i in L:
4. if i not in L1: 
5. L1.append(i) 
6. 
7. return L1 
8. 
9. print(delList([1,2,2,3,3,4,5])) 
10. print(delList([1,8,8,3,9,3,3,3,3,3,6,3]))

换成列表推导式更简单:

1. l1 = ['b','c','d','b','c','a','a'] 
2. l2 = [] 
3. [l2.append(i) for i in l1 if not i in l2] 
4. print l2
方法四:先对元素进行排序,然后从列表的最后开始扫描。
?

?

2. 编程用 sort 进行排序,然后从最后一个元素开始判断

?

3.Python 里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别)

?
1)赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。
?
2)浅拷贝:创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改
其中一个对象,另外一个也会修改改变){1,完全切片方法;2,工厂函数,如 list();3,copy 模块
的 copy()函数}。
?
3)深拷贝:创建一个新的对象,并且递归的复制它所包含的对象(修改其中一个,另外一个不会改
变){copy 模块的 copy.deepcopy()函数}。
?

?

4.Python 里面 match()和 search()的区别?

re 模块中 match(pattern,string[,flags]),检查 string 的开头是否与 pattern 匹配。
re 模块中 research(pattern,string[,flags]),在 string 搜索 pattern 的第一个匹配
?
1. >>>print(re.match(‘super’, ‘superstition’).span()) 
2. 
3. (0, 5) 
4. 
5. >>>print(re.match(‘super’, ‘insuperable’)) 
6. 
7. None 
8. 
9. >>>print(re.search(‘super’, ‘superstition’).span()) 
10. 
11. (0, 5) 
12. 
13. >>>print(re.search(‘super’, ‘insuperable’).span()) 
14. 
15. (2, 7)

?

5.用 Python 匹配 HTML tag 的时候,<.*>和<.*?>有什么区别?

术语叫贪婪匹配( <.*> )和非贪婪匹配(<.*?> )

例如:test<.*> :
?
test<.*?>:
?
<.*>是贪婪匹配,会从第一个“<”开始匹配,直到最后一个“>”中间所有的字符都会匹配到,
?
中间可能会包含“<>”。
?
<.*?>是非贪婪匹配,从第一个“<”开始往后,遇到第一个“>”结束匹配,这中间的字符串都会
?
匹配到,但是不会有“<>”。
?

?

6.Python 里面如何生成随机数?

使用 random 模块。

1)随机整数:random.randint(a,b):返回随机整数 x,a<=x<=b

random.randrange(start,stop,[,step]):返回一个范围在(start,stop,step)之间的随机整数,不包括结束值

2)随机实数:random.random( ):返回 0 到 1 之间的浮点数,

random.uniform(a,b):返回指定范围内的浮点数。

?

7.请用代码实现一个冒泡排序?

?

8.请用代码实现输出:1,2,3,5,8,13,21,34,55,89……

这道题考的是斐波那契数列的实现。

用生成器实现:

迭代器实现:
?
?

?

9.请解释下 TCP/IP 协议和 HTTP 协议?

HTTP 协议:

HTTP 协议即超文本传送协议(Hypertext Transfer Protocol ),是 Web 联网的基础,也是手机联网常用的协议之一,HTTP 协议是建立在 TCP 协议之上的一种应用。HTTP 连接最显著的特点是
客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。
?
TCP/IP 协议:
?
TCP/IP(Transmission Control Protocol/Internet Protocol)协议是传输层协议,主要解决 数据如何在网络中传输。HTTP 是应用层协议,主要解决如何包装数据。IP 协议对应于网络层。?
?

?

10.Python 里面如何实现 tuple 和 list 的转换?

?
list 转换成 tuple:t=tuple(l)。
?
tuple 转换成 list:l=list(t)。

?

11.请写出以下 Linux 的 SHELL 命令?

12. Python 如何实现单例模式?请写出两种实现方法?

在 Python 中,我们可以用多种方法来实现单例模式:

1. 使用模块;
2.使用__new__;
3.使用装饰器;
4. 使用元类(metaclass)。
?
1)使用模块:其实,Python 的模块就是天然的单例模式,因为模块在第一次导入时,会生成.pyc 文件,当第二次导入时,就会直接加载.pyc 文件,而不会再次执行模块代码。因此我们只需把相关的函数和数 据定义在一个模块中,就可以获得一个单例对象了。
?
?
2)使用__new__:为了使类只能出现一个实例,我们可以使用__new__来控制实例的创建过程
?

?

3)使用装饰器:装饰器可以动态的修改一个类或函数的功能。这里,我们也可以使用装饰器来装饰某个类,使其只能生成一个实例
?
?
?
4)使用 metaclass(元类):元类可以控制类的创建过程,它主要做三件事:
-
拦截类的创建
-
修改类的定义
-
返回修改后的类
?
?

?

13.Python 如何生成随机数?

?

14.Mysql 集群的优缺点?

优点:
?
99.999%的高可用性
?
快速的自动失效切换
?
灵活的分布式体系结构,没有单点故障
?
高吞吐量和低延迟
?
可扩展性强,支持在线扩容
?
缺点:
?
存在很多限制,比如:不支持外键
?
部署、管理、配置很复杂
?
占用磁盘空间大、内存大
?
备份和恢复不方便
?
重启的时候,数据节点将数据 load 到内存需要很长的时间
?
?

15.你用的 Mysql 是哪个引擎,各引擎之间有什么区别?

主要MyISAM 与 InnoDB 两个引擎,其主要区别如下:

InnoDB 支持事务,MyISAM 不支持,这一点是非常之重要。事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而 MyISAM 就不可以了;

MyISAM 适合查询以及插入为主的应用,InnoDB 适合频繁修改以及涉及到安全性较高的应用;

InnoDB 支持外键,MyISAM 不支持;

MyISAM 是默认引擎,InnoDB 需要指定;

InnoDB 不支持 FULLTEXT

类型的索引;

InnoDB 中不保存表的行数,如select count() from table 时,InnoDB;需要扫描一遍整个表来 计算有多少行,但是 MyISAM 只要简单的读出保存好的行数即可。注意的是,当 count()语句包含

where 条件时 MyISAM 也需要扫描整个表;

对于自增长的字段,InnoDB 中必须包含只有该字段的索引,但是在 MyISAM 表中可以和其他字 段一起建立联合索引;清空整个表时,InnoDB 是一行一行的删除,效率非常慢。MyISAM 则会重建

表;

InnoDB 支持行锁(某些情况下还是锁整表,如 update table set a=1 where user like '%lee%'

?

16. 数据库的优化?

1.优化索引、SQL 语句、分析慢查询;

2.设计表的时候严格根据数据库的设计范式来设计数据库;

3.使用缓存,把经常访问到的数据而且不需要经常变化的数据放在缓存中,能节约磁盘 IO

4.优化硬件;采用 SSD,使用磁盘队列技术(RAID0,RAID1,RDID5)等

5.采用 MySQL 内部自带的表分区技术,把数据分层不同的文件,能够提高磁盘的读取效率;

6.垂直分表;把一些不经常读的数据放在一张表里,节约磁盘 I/O;

7.主从分离读写;采用主从复制把数据库的读操作和写入操作分离开来;

8.分库分表分机器(数据量特别大),主要的的原理就是数据路由;

9.选择合适的表引擎,参数上的优化

10.进行架构级别的缓存,静态化和分布式;

11.不采用全文索引;

12.采用更快的存储方式,例如:NoSQL 存储经常访问的数据**。

?

17. Mysql 数据库中怎么实现分页?

select * from table limit (start-1)*limit,limit; 其中 start 是页码,limit 是每页显示的条数。

?

18. sql 语句怎么看效率?

SQLServer2005-->新建一个查询-->输入语句 SELECT * FROM Person.Contact

执行(F5)-->Ctrl+L.

?

20.Python 中调用 mongo 数据库的包叫什么?

Pymongo。

?

未完。。。

?

?

?

?

?
;原文链接:https://blog.csdn.net/ChengYin1124/article/details/115919251

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 【面试题】花3个小时整理的朋友在深圳

    【面试题】花3个小时整理的朋友在深圳

  • DNSlog注入原理

    DNSlog注入原理

  • MySQL 运维 - 高阶SQL语句

    MySQL 运维 - 高阶SQL语句

  • Leetcode141:环形链表(巧解+扩展)

    Leetcode141:环形链表(巧解+扩展)

腾讯云代理商
海外云服务器