python企业真题实战 - 广州锦行面试题

面试题:

  1. 数据分析的模块有深入了解过吗?
  2. 前端引用css的几种方式?
  3. MySQL与MongoDB的区别
  4. redis数据库怎么用?
  5. MySQL查询优化?
  6. 蜜罐怎么解释?
  7. 单线程做网络并发怎么实现?
  8. GIL对python的影响?
  9. 爬虫类库requests库的底层库原理?

参考答案:

  1. 数据分析的模块有深入了解过吗?
    答:数据分析的常用模块有Matplotlib、Numpy和Pandas。
    Matplotlib是专门用于开发2D图标的,使用起来简单,以渐进、交互式方式实现数据可视化。
    Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组。Numpy支持常见的数组和矩阵操作。对于同样的数值计算任务,使用Numpy比直接使用Python要简洁的多。Numpy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器。
    Pandas则是两者的整合,以Numpy为基础,借力Numpy模块在计算方面性能高的优势,基于matplotlib,能够简便的画图,还有属于自己的独特数据结构。

  2. 前端引用css的几种方式?
    答:行内式、嵌入式、外链式。在实际开发中,一般外链式使用的比较多,因为单个网页css样式存放在一起,方便维护。

  3. MySQL与MongoDB的区别?
    答:①两者都是开源的数据库系统,MongoDB属于文档型数据库,数据都存放在内存里,也可以说是内存型数据库;而MySQL是存放在存储引擎上的,所以能处理远超内存总量的数据;
    ②MongoDB是非关系型数据库的代表之一,而MySQL是关系型数据库的代表之一;
    ③MongoDB不支持事务,拥有弱一致性的特点,更能保证用户的访问速度,而MySQL支持事务,缺点是在海量数据处理与热数据时,效率会显著变慢;

  4. redis数据库怎么用?
    答:redis一般使用在网站做缓存、及临时数据处理,例如网站日志、图片验证码、用户浏览历史等。

  5. MySQL查询优化?
    答:MySQL分为两种优化,数据表设计优化和MySQL查询语句优化。
    ①:表设计优化:a.对较频繁的作为查询条件的字段建立索引;
    b.可以考虑结合使用内在型数据库,如Redis,进行混合存储,提升查询效率;
    c.选择恰当的数据类型,如整型的选择;
    d.可以做冗余字段设计(空间换时间的思想,属于一种反范式设计),减少join的操作。
    ②:查询语句优化:a.使用慢查询工具找出效率低下的SQL语句进行优化;
    b.SQL语句尽量大写,对于小写的sql语句,通常数据库在解析sql语句时,通常会先转换成大写再执行;
    c.尽量避免在 where 子句中使用!=或<>操作符, MySQL只有对以下操作符才使用索引:<,<=,=,>,>=,BETWEEN,IN,以及某些时候的LIKE;
    d.查询时使用select明确指明所要查询的字段,避免使用select *的操作。

  6. 蜜罐怎么解释?
    答:蜜罐技术本质上是一种对攻击方进行欺骗的技术,通过布置一些作为诱饵的主机、网络服务或者信息,诱使攻击方对它们实施攻击,从而可以对攻击行为进行捕获和分析,了解攻击方所使用的工具与方法,推测攻击意图和动机,能够让防御方清晰地了解他们所面对的安全威胁,并通过技术和管理手段来增强实际系统的安全防护能力(百科)。

  7. 单线程做网络并发怎么实现?
    答:使用Node.js标准库。单线程解决高并发的思路就是采用非阻塞、异步编程的思想,而Node.js结构中的libuv它为 Node.js 提供了跨平台,线程池,事件池,异步 I/O 等能力;
    python企业真题实战 - 广州锦行面试题_第1张图片
    每个Node.js进程只有一个主线程在执行程序代码,形成栈,还维护了一个“事件队列“(Event queue),当有网络请求或其他异步操作到来时,都会被放入“事件队列”中;当主线程执行完毕后,会通过Vent Loop(事件循环机制)一个一个将事件取出,从线程池分配一个线程去执行;当有事件执行完毕后,会通知主线程,主线程执行回调,线程归还给线程池;而主线程不断检查事件队列中是否有未执行的事件,直至所有事件处理完毕。
    nodejs之所以单线程可以处理高并发的原因,在于libuv层的事件循环机制,和底层线程池的实现。
    python企业真题实战 - 广州锦行面试题_第2张图片

  8. GIL对python的影响?
    答:解决多线程之间数据完整性和状态同步的全局解释器锁,是Cpython解释器中引入时特有的一种概念。
    因为这把锁时全局有效,当其他线程需要执行时,就需要获取到GIL的许可才能有cpu执行的资源,这是GIL影响python性能的主要的原因。

  9. 爬虫类库requests库的底层库原理?
    答:根据第一句话的翻译是请求的HTTP库。python企业真题实战 - 广州锦行面试题_第3张图片
    待解决(有大佬为我解答一下吗?)。

你可能感兴趣的:(python之面试,python,面试,数据库,数据分析,爬虫)