在面试之前觉得自己有几个小项目的经验就飘了,自我感觉称不上是 “大侠” 怎么也算是个“少侠” 吧!面完试之后发现原来是“小虾”
。其实项目经验重要,基础题跟算法题更重要,搞好基础题跟算法才是王道,横行霸道,霸道横行,横着走路。豪横!!!
面试官想要快速考察面试者的编程能力是很困难的,因为面试时间长则一个小时,短则二三十分钟。编程基础题跟算法问题是可以短时间考察面试者解决问题能力的最好办法,你会就是会,不会就是不会。
项目经验这个东西可以吹水的地方很多,而且面试官如果不是十分了解面试者的项目的话,是很难判断面试者吹水的成分有多大。如果基础题跟简单算法题都写不出来代表代码水平其实并不高。
面试时看到题目的时候第一感觉就是即眼熟又简单。就是写不出来·····,写了完之后感觉五五开写了一半一半。回来写总结的时候发现写的一半里面估计又错了一半有点小尴尬。
GIL 是 Python 的全局解释器锁,同一进程中假设有多个线程运行,一个线程在运行 Python 程序的时候会霸占 Python 解释器(加了一把锁即 GIL),使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。
多进程中因为每个进程都能被系统分配资源,相当于每个进程有了一个 Python解释器,所以多进程可以实现多个进程的同时运行,缺点是进程系统资源开销大。
__new__
是在实例创建之前被调用的,因为它的认识就是创建实例然后返回该实例对象,是个静态方法。
__init__
是在实例对象创建完成后被调用的,然后设置对象属性的一些初始值,通常用在初始化一个类实例的时候。是一个实例方法。
f.open 文件写入流程
这三个步骤中最后一个关闭文件如果忘记了就会造成占用资源或者执行不了删除和移动文件。
with … as …
当程序执行在代码块内时,文件会一直保持打开状态,一旦程序离开这个代码块,程序就会自动关闭这个文件。
Python3
(.*)
和(.*?)的匹配区别(.*)
单个字符匹配任意次,即贪婪匹配。
(.*?)
条件满足的情况只匹配一次,即非贪婪匹配、最小匹配。
ORM:对象关系映射
作用:根据类生成表结构,讲对象、列表的操作转换成对象的SQL语句,将SQL语句查询的结果转换为对象或列表。
优点:极大的减轻开发人员的工作量,不需要面对因数据库的更变而导致代码无效再修改代码。
mysql -u root -p
show databases;
use test;
show tables;
desc winton
CREATE DATABASE database-name
drop database dbname
InnoDB功能比MyISAM强大很多
InnoDB性能比MyISAM差很多
InnoDB 适合:
MyISAM 适合
多线程指的是在同一时间段内,一个运行的程序(进程)同时处理几个不同的任务,比如一个在求最大值,一个在求和,对单线程程序而言,多线程处理单个任务的速度会有所下降,但是总体速度一般会有所提高;
而多进程指的是一个程序的几个实例,比如你两次打开记事本,就产生了两个记事本程序的进程,而有些程序只能是单进程的,就是只能运行一个实例。
拓展:
这里做一个比喻:进程就是公司, 线程就是公司里面的员工。
__name__
的值与作用test.py 文件直接运行和被 import test, __name__
值分别是什么,说出__name__这个内建的系统变化最大的作用是什么?
直接运行时 __name__
值为 __main__
import时值为 模块名(model name)
可以防止不需要的模块被执行。
五个级别 从高到低 用数字表示为 10、20、30、40、50
爬虫过程中发现被服务端反爬了,这个时候做哪些调整来绕过服务器的反爬虫机制?至少列出3种,开启你的想象越多越好。
通过伪装请求头中的 user-agent 来解决。诺user-agent 被检测到,可以找大量的 user-agent 放入列表进行更换。
通过代理伪装 IP
可以通过设置请求间隔和爬取间隔。
对于简单的验证码可以使用 tesseract 处理,复杂的可以去打码平台。
使用 selenium + phantomjs 来加载JS获取数据。
爬虫过程中需要账号登录,且需要不停换账号才能持续爬取数据,这时候你是如何设计,让程序高效健壮运行呢?
BeautifulSoup 或解析器解析出 a标签中的跳转链接。
soup = BeautifulSoup(html, 'lxml')
for item in soup.find_all("a"):
print(item.get('href'))
html.xpath('//a[@class="sister"]/@href')
个人感觉学编程跟练武功差不多,马步要扎实(基础),剑法套路要有(项目),内功心法要炼(算法)这样才能成为大侠!!! 加油!!!