附答案 | 最强Python面试题之Python进阶题第四弹

本文正在参与【[ 面霸养成记 ] 】 征文活动,一起来聊聊校招的那些事吧,牛客周边和百元京东卡等你来领~

写在之前

大家好呀,我是帅蛋。

哒哒哒,Python 进阶面试题第四弹来啦,加餐加餐,今天 17 道题!

这也是Python 进阶面试题最后一篇文章,下一次我们就会开始 Python 后台开发面试题的更新啦,快把期待打在评论区!

还是那句话,面试八股文尽在帅蛋的【最强Python面试题】系列里啦!!!

每天一定出现的帅蛋,一定要记得点赞收藏呀!!!

欢迎和帅蛋聊一聊~扣扣2群:609771600,获取最新秋招信息 & 内推进度,日常聊聊迷茫吹吹牛皮,抱团取暖

顺便提一句,我所有和面试相关的内容都会放在#帅蛋的面试空间# 中,大家可以关注下这个话题~

我会尽我最大的努力帮助到大家哒!!!

主要内容

这些面试题是我结合自己的经验整理的,主要就是下面这 5 个专题:

  • Python 基础面试题
  • Python 进阶
  • Python 后台开发
  • 爬虫
  • 机器学习

已完成

Python 基础题

正在更新

Python 进阶题

对每道面试题我都会附带详细的答案,有些我觉得重要的内容会详细讲解,虽然是面试八股文,我还是希望大家不是只“知其然”,更得“知其所以然”

关于更新频率,每天我会更新 10 道题左右,总共会有差不多 200 道。

无论是准备面试还是自己学习,这份面试题绝对值得你去看,去学习。

大家可以关注我,再关注我,使劲关注我,不要错过每天的更新~

以下是正文

Python 进阶面试题第三弹正式开始,大家一定要记得点赞收藏,一起加油!

1、Python 中 is 和==的区别?

is 判断的是 a 对象是否就是 b 对象,是通过 id 来判断的。

==判断的是 a 对象的值是否和 b 对象的值相等,是通过 value 来判断的。

2、谈谈你对面向对象的理解?

面向对象是相对于面向过程而言的。

面向过程语言是一种基于功能分析的、以算法为中心的程序设计方法

面向对象是一种基于结构分析的、以数据为中心的程序设计思想。在面向对象语言中有一个有很重要东西,叫做类。面向对象有三大特性:封装、继承、多态。

3、Python 里 match 与 search 的区别?

match()函数只检测 RE 是不是在 string 的开始位置匹配

search()会扫描整个 string 查找匹配

也就是说 match()只有在 0 位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回 none。

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

<.*>是贪婪匹配,会从第一个“<”开始匹配,直到最后一个“>”中间所有的字符都会匹配到,中间可能会包含“<>”。

<.*?>是非贪婪匹配,从第一个“<”开始往后,遇到第一个“>”结束匹配,这中间的字符串都会匹配到,但是
不会有“<>”。

5、Python 中的进程与线程的使用场景?

多进程适合在 CPU 密集型操作(cpu 操作指令比较多,如位数多的浮点运算)。

多线程适合在 IO 密集型操作(读写数据操作较多的,比如爬虫)。

6、解释一下并行(parallel)和并发(concurrency)的区别?

并行(parallel)是指同一时刻,两个或两个以上时间同时发生。

并发(parallel)是指同一时间间隔(同一段时间),两个或两个以上时间同时发生。

7、如果一个程序需要进行大量的 IO 操作,应当使用并行还是并发?

并发

8、如果程序需要进行大量的逻辑运算操作,应当使用并行还是并发?

并行

9、在 Python 中可以实现并发的库有哪些?

  • 线程

  • 进程

  • 协程

  • threading

10、Python 如何处理上传文件?

Python 中使用 GET 方法实现上传文件,下面就是用 Get 上传文件的例子,client 用来发 Get 请求,server 用来收请求。

请求端代码

import requests #需要安装 requests

with open('test.txt', 'rb') as f:
requests.get('http://服务器 IP 地址:端口', data=f)

服务端代码

var http = require('http');
var fs = require('fs');
var server = http.createServer(function(req, res){

    var recData = "";
    req.on('data', function(data){
    recData += data;
    })
    req.on('end', function(data){
    recData += data;
    fs.writeFile('recData.txt', recData, function(err){
    console.log('file received');
        })
    })
    res.end('hello');
    })
server.listen(端口);

11、请列举你使用过的 Python 代码检测工具?

  • 移动应用自动化测试 Appium

  • OpenStack 集成测试 Tempest

  • 自动化测试框架 STAF

  • 自动化测试平台 TestMaker

  • JavaScript 内存泄露检测工具 Leak Finder

  • Python 的 Web 应用验收测试 Splinter

  • 即插即用设备调试工具 UPnP-Inspector

12、python 程序中文输出问题怎么解决?

方法一

用encode和decode,如:

import os.path
import xlrd,sys

Filename=’/home/tom/Desktop/1234.xls’
if not os.path.isfile(Filename):
    raise NameError,”%s is not a valid filename”%Filename

bk=xlrd.open_workbook(Filename)
shxrange=range(bk.nsheets)
print shxrange

for x in shxrange:
    p=bk.sheets()[x].name.encode(‘utf-8′)
    print p.decode(‘utf-8′)

方法二

在文件开头加上

reload(sys)

sys.setdefaultencoding(‘utf8′)

13、Python 如何 copy 一个文件?

shutil 模块有一个 copyfile 函数可以实现文件拷贝

14、如何用Python删除一个文件?

使用 os.remove(filename) 或者 os.unlink(filename)

15、如何用 Python 来发送邮件?

python实现发送和接收邮件功能主要用到poplib和smtplib模块。

poplib用于接收邮件,而smtplib负责发送邮件。

#! /usr/bin/env python
#coding=utf-8
import sys
import time
import poplib
import smtplib

# 邮件发送函数
def send_mail():
     try:
        handle = smtplib.SMTP('smtp.126.com',25)
        handle.login('XXXX@126.com','**********')
        msg = 'To: XXXX@qq.com\r\nFrom:XXXX@126.com\r\nSubject:hello\r\n'
        handle.sendmail('XXXX@126.com','XXXX@qq.com',msg)
        handle.close()
        return 1
    except:
        return 0

# 邮件接收函数
def accpet_mail():
    try:
        p=poplib.POP3('pop.126.com')
        p.user('pythontab@126.com')
        p.pass_('**********')
        ret = p.stat() #返回一个元组:(邮件数,邮件尺寸)
       #p.retr('邮件号码')方法返回一个元组:(状态信息,邮件,邮件尺寸)
    except poplib.error_proto,e:
        print "Login failed:",e
        sys.exit(1)

# 运行当前文件时,执行sendmail和accpet_mail函数
if __name__ == "__main__":
    send_mail()
    accpet_mail()

16、当退出 Python 时,是否释放全部内存?

不是。

循环引用其它对象或引用自全局命名空间的对象的模块,在Python退出时并非完全释放。另外,也不会释放C库保留的内存部分。

17、什么是猴子补丁?

在运行期间动态修改一个类或模块。

>>> class A:
    def func(self):
        print("Hi")
>>> def monkey(self):
print "Hi, monkey"
>>> m.A.func = monkey
>>> a = m.A()
>>> a.func()

运行结果为:

Hi, Monkey

最近牛客在搞一个秋招同行计划,邀请大家一起记录自己的笔试,面试经历,写一篇讨论帖@周周~ 就可以得100牛币

反正不限制字数和题材,写的好的还可以拿到50京东卡、周边、一些技术书等,大家冲起来!

活动详情:https://www.nowcoder.com/link/bgzz2023

以上就是今天的内容,我是帅蛋,我们明天见~

❤️ 欢迎关注我,有问题,找帅蛋,我最看不得别人迷茫!

❤️ 如果你觉得有帮助,希望爱学习的你不要吝啬三连击哟[点赞 + 收藏 + 评论]~

还有小小公众号 【编程文青李狗蛋】,聊聊迷茫吹吹牛皮~

#帅蛋的面试空间##面试八股文##秋招##Python##python面试#
全部评论
来啦来啦,今天加餐,快快顶起来~
1 回复
分享
发布于 2022-08-01 18:27
并发(concurrency):把任务在不同的时间点交给处理器进行处理。在同一时间点,任务并不会同时运行。 并行(parallelism):把每一个任务分配给每一个处理器独立完成。在同一时间点,任务一定是同时运行。
3 回复
分享
发布于 2022-08-02 15:55
联易融
校招火热招聘中
官网直投
已阅
点赞 回复
分享
发布于 2022-08-01 18:32
太强了
点赞 回复
分享
发布于 2022-08-01 20:02
先收藏再看!
点赞 回复
分享
发布于 2022-08-01 20:03
来顶一顶
点赞 回复
分享
发布于 2022-08-01 22:02
点赞 回复
分享
发布于 2022-08-02 12:49
期待大佬的更新~~
点赞 回复
分享
发布于 2022-08-18 19:00 江苏

相关推荐

31 121 评论
分享
牛客网
牛客企业服务