hasattr()函数
用于判断对象是否包含对应的属性
语法:hasattr(object, name)
参数:object: 对象,name: 字符串,属性名
返回值:如果对象有该属性就返回True,否则返回False。

从这里开始记录工作中的知识点(倒着写的)

最近在找工作,说是面试,可总少不了笔试,每天收集一些知识问答,就当复习巩固了,加油!

1.今天面试被问到:怎么在linux中的文件中查找你需要的内容?
答:当然是使用grep命令了,下面记录一下grep命令的详细使用方法。

grep命令

基本格式:grep [options] ‘pattern’ filename

[options]主要参数:
    -c:只输出匹配行的计数。
    -i:不区分大小写
    -h:查询多文件时不显示文件名。
    -l:查询多文件时只输出包含匹配字符的文件名。
    -n:显示匹配行及行号。
    -s:不显示不存在或无匹配文本的错误信息。
    -v:显示不包含匹配文本的所有行。

pattern正则表达式主要参数:
    \: 忽略正则表达式中特殊字符的原有含义。
    ^:匹配正则表达式的开始行。
    $: 匹配正则表达式的结束行。
    \<:从匹配正则表达 式的行开始。
    \>:到匹配正则表达式的行结束。
    [ ]:单个字符,如[A]即A符合要求 。
    [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
    .:所有的单个字符。
    * :有字符,长度可以为0。

实例:

  1. grep ‘test’ d*  #显示所有以d开头的文件中包含 test的行
  2. grep ‘test’ aa bb cc    #显示在aa,bb,cc文件中包含test的行
  3. grep ‘[a-z]{5}’ aa   #显示所有包含每行字符串至少有5个连续小写字符的字符串的行
  4. grep magic /usr/src  #显示/usr/src目录下的文件(不含子目录)包含magic的行
  5. grep -r magic /usr/src  #显示/usr/src目录下的文件(包含子目录)包含magic的行
  6. grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),

2.*args 和 **kwargs 的区别?
答:*args 用来接收不定长参数,通常是元组形式,**kwargs 用来接收关键字参数,通常是字典的形式。

3.讲下对GIL线程全局解释器锁的理解。
答:GIL是因为历史原因在Cpython解释器上遗留的一个问题,难以解除,导致使用Cpython解释器开启多线程时,同一时刻只有一个线程在执行代码。

  1. GIL:全局解释器锁,每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个线程可以执行代码;
  2. Python使用多进程是可以利用多核的CPU资源的;
  3. 多线程爬取数据时,多线程比单线程性能有提升,因为遇到IO阻塞时线程会自动释放GIL锁。
  4. 在IO密集型的程序中,开启多线程是可以提升程序的运行效率的;而在CPU密集型的程序中,开启多线程的效果并不明显,推荐使用多进程。

4.get,post这两种请求方式的区别?

  1. get请求的数据可以被缓存,post不会;
  2. get请求会保留在浏览器的历史记录中,post不会;
  3. get请求可以被收藏为书签,post不能;
  4. get请求不可以在传递敏感参数时使用;
  5. get请求传递的参数有长度限制;
  6. get请求只用于数据的获取。

5.Cookie 和 Session 的区别?

  1. cookie保存在浏览器中,session保存在服务器中;
  2. session依赖于cookie;
  3. cookie不安全,如果cookie中存放了用户个人敏感信息,别人可以分析浏览器中的cookie进行cookie欺骗;
  4. session会在一定时间内存放在服务器中,当访问量增大时,也会增加服务器的缓存的压力;
  5. cookie保存的数据最大不能超过4KB,很多浏览器中最多只能保存20个cookie数据。

6.Mysql视图的作用

  1. 提高了重用性,就像一个函数;
  2. 如果对数据库进行重构,却不影响程序的运行;
  3. 提高了安全性能,可以面对不同的客户;
  4. 让数据更加清晰。

7.Mysql的索引

  1. 索引是一种特殊的数据结构;
  2. 要注意的是,建立太多的索引将会影响更新和插入的速度,因为它需要同样更新每个索引文件。当数据量很大且查询频繁的字段创建索引即可。
  3. 例如给字符串创建索引:create index 索引名称 on 表名 (字段名 (长度))

8.说一说对同步、异步、阻塞、非阻塞的理解?
同步异步指的是一个过程,阻塞与非阻塞指的是一种状态;

  1. 同步:执行一个操作后,必须等待这个操作结束后才能继续执行下一个操作;
  2. 异步:执行一个操作后,接着着可以执行下一个操作;
  3. 阻塞:进程在给CPU传达一个任务后,需要等CPU回复执行结果后才能继续后续的操作;
  4. 非阻塞:进程在给CPU传达一个任务后,继续处理后续的操作,隔段时间来询问CPU的执行结果,这个过程也叫做轮询。

9.linux查看服务的进程号和端口号
查看进程号:ps aux | grep service
查看端口号:netstat -anp | grep processname