python近期遇到的一些面试问题(四)

论坛 期权论坛 期权     
Python学习开发   2019-7-7 23:20   3017   0
去年也是这个时候吧,当时正好也是面试,所以总结了三篇面试的题目。另外前段时间我出了一个面试题的课程Python 面试题 170 道:2019 版,总结了Python的一些方法的使用技巧以及在面试中可能遇到的题目。接下来是我这这段时间遇到的面试题,之前一直懒得写,今天做一个总结吧,这里的题目是170道面试题中没有出现的题目。
[h2]1.简述cookie和session的区别 [/h2]这篇文章写的很详细了:https://mp.weixin.qq.com/s/rIiC-yVzm1swR8rOioP2QA
[h2]2.网络状态码: [/h2]状态码类别原因1XXInformational(信息性状态码)接受的请求正在处理2XXSuccess(成功状态码)请求正常处理完毕3XXRedirection(重定向状态码)需要进行附加操作以完成请求4XXClient Error(客户端错误状态码)服务器无法处理请求5XXServer Error(服务器错误状态码)服务器处理请求出错[h2]3.状态码301和302是什么含义,其区别是? [/h2][h3]定义[/h3]301 Moved Permanently 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。
302 Found 请求的资源现在临时从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。
简单理解就是301是永久重定向,301请求是可以缓存的,即通过看status code,可以发现后面写着from cache。而302是临时重定向。
[h3]区别[/h3]302重定向只是暂时的重定向,搜索引擎会抓取新的内容而保留旧的地址,因为服务器返回302,所以,搜索搜索引擎认为新的网址是暂时的。
而301重定向是永久的重定向,搜索引擎在抓取新的内容的同时也将旧的网址替换为了重定向之后的网址。
[h2]4.正则表达式相关的题目 [/h2]1.在网页中使用正则表达式匹配出类似https://m.baidu.com/1.html的链接。例如https://m.baidu.com/22.html可以但是https://m.baidu.com不可以。答:这个比较简单直接.*就解决了
  1. import rehtml = ("""       这是页面1          这是页面2          这是页面3          这是页面4      这是页面5     这是页面6   """)pattern_str = r"https://m.baidu.com/.*?\.html"pattern_obj = re.compile(pattern_str)result = pattern_obj.findall(html)print(result)
复制代码
2.思考上面的.*?能否改为.*?为什么?这就牵扯到贪婪匹配和懒惰匹配;在限定符后面加上?,则为懒惰模式;在限定符后面不加?则为贪婪模式。
当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。
有时,我们更需要懒惰匹配,也就是匹配尽可能少的字符。前面给出的限定符都可以被转化为懒惰匹配模式,只要在它后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。懒惰限定符
代码/语法说明*?重复任意次,但尽可能少重复+?重复1次或更多次,但尽可能少重复??重复0次或1次,但尽可能少重复{n,m}?重复n到m次,但尽可能少重复{n,}?重复n次以上,但尽可能少重复所以针对第一题如果我们使用.*匹配最后一条会匹配出如下内容
  1. "https://m.baidu.com/music_html_9.html'>这是页面5 {content}'            return result        return test2    return test@tag()def render(text,*args,**kwargs):    return text@tag(name='p', title='text')def render2(text,*args,**kwargs):    return texta = render('hello')print(a)b = render2('你好')print(b)
复制代码
更多的 Python 面试题可以了解一下我在 GitChat 的课,扫下面的二维码即可。



分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:5
帖子:1
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP