【Python】爬虫面试总结分享

一、xxx大数据公司(2018.10.30)

Q1. 你遇到的比较难的爬虫问题?

Q2. 请求一定页数后就会被封如何应对?

A:这个时候,我们会估算一下,多少页之后会封,然后换cookie继续。

Q3. 有的时候请求到空数据,

A: 这个问题已经发现我是爬虫了,
①看看我的代理,是不是过期了,
②看看cookie是不是过期了,
③看看是不是有referer字段反爬,
④找不到规律了,源代码 ajax请求都不是,那就可以开始看js了,找到具体js如何执行,然后使用js2py,直接把js代码转换为python程序去执行,解决这个问题

​Q4. 给你一个项目你要怎么爬(考你爬虫思路)

Q5. 爬虫网页分析流程

Q6. 如果你的IP一直被封,怎么办?

1. 转用高密代理
2. 实在不行使用真实ip

Q7. 一天能跑多少数据?

这个跟网速、带宽、电脑核数都有关系,目前我们爬取了全国的数据大概有70万套房源,在web上展示北京的有20万左右,跑了一个星期左右,写字楼网站大概爬取了十几个

Q8. 手机爬虫用过吗?

fiddler 抓包
原理是==>在本机来了一个http的代理服务器,然后转发http请求响应。使用的时候,设置成安卓,配置代理,然后用这个设备访问百度

Q9. appium手机爬虫会用吗?

二、HUWEI外包—python工程师(2018.10.31)

Q1. 多线程,多进程

Q2. linux命令

Q3. 项目用的是什么协议

Q4. http

Q5. 前端会是吗?

Q6. 程序开几个进程?

nginx负责负载均衡,uwsgi负责多进程运行,开多少进程,uwsgi.ini配置文件有设置,一般与cpu核数一样,用做服务器的核心数一般都大于等于8核

三、阿里外包

Q1. 面向对象的重载 和覆盖 的区别

Python 当中没有重载这个概念!
其他语言中有 重载的意思就是说 定义两个同名的函数 第一个函数需要一个参数,第二个函数需要两个参数。
在python 当中是不能够这样定义的!
因为你定义了第一个之后 再定义第二个同名方法体就会覆盖掉前面的, 而对于其他的语言的话是可以同时定义两个方法名相同的函数的,只需要参数那边不一样就行了. 在调用的时候根据你传的参数 编译器会自动识别你想要调用哪一个函数.

重载和覆盖的区别:
重载:
(1)一个类中定义多个同名方法。不同的参数列表(参数个数、参数类型、参数顺序);
(2)不能通过方法的访问权限、返回值类型和抛出异常类型进行重载;
覆盖:
(1)派生类方法覆盖基类方法。派生类的方法必须要基类的方法有相同方法名和参数;
(2) 派生类的方法返回值类型必须和基类方法的返回值类型相同;
(3) 派生类方法的抛出异常类型必须和基类方法的抛出异常类型一致;
(4) 基类的被覆盖的方法不能为private,否则子类方法只是定义了一个方法,并没有实现覆盖。

Q2. 程序如何监听 80端口?

切换root用户

更改Nginx配置文件的server  listen端口号为80

socket.listen(80)

netstat -ntpl  查看监听端口

我们可以在8080端口和80端口之间做一个NAT转化

/sbin/iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 

CAP_NET_BIND_SERVICE设置

CAP_NET_BIND_SERVICE setcap cap_net_bind_service =+ep /path/to/application

Q3. 堆和栈的区别

栈区域: 系统自动分配. 存储局部变量 如:int num=10, int* p=&num。 num 与 p 都存储在栈区域
堆区域: 允许程序员手动的从堆申请空间来使用,要主动释放。除非程序结束 如:int 4, float 4…. malloc,calloc …
BSS段区域: 存储未初始化的全局变量/静态变量,因程序运行时其全局/静态变量都没有初始化
数据段/常量区:存储已初始化的全局变量/静态变量,与常量数据, 在main 外定义的变量
代码段区域: 存储程序代码/指令
申请效率的比较: 
栈由系统自动分配,速度较快。但程序员是无法控制的。 
堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便.

栈: 元素有先进后出顺序的线性结构。可以考虑叠盘子,只能从最上面拿盘子,也只能往最上面放盘子。那这个盘子序列、包括上面两条规则就构成了一个栈 

堆: 满足一定限制的树型结构(比如父亲节点的权值要大于儿子节点的权值,左儿子又要大于右儿子)。

其他阿里面试问题:

Q4. 笔试三道题:二分法,快排,完全二叉树,写代码。

Q5. Redis五种基本数据类型的底层实现

Q6. 还问数据库的查询优化。

四、点我达—数据仓库工程师(2018.10.31)

Q1. 说一下scrapy框架

Q2. 你们ip池有多大

 1000,买的

Q3. 如何维护ip池

 有一个程序,取出ip进行请求测试,看响应状态码,请求失败的剔除

Q4. selenium什么时候使用的

通过js实现了数据的加密,通过js生成了请求参数

Q5. 手机爬虫 appium

Q6. 数据库

Q7. 网页分析流程

Q8. 谷歌有一个抓包的工具知道吗

Q9. celery什么时候用过,原理是什么

在做web的时候,用于发送短信验证码,邮箱验证的时候

个人相关:

Q10. 自己的规划

Q11. 未来是注重python 还是要往分析方面走

Q12. 为什么来杭州

Q13. 学习途径

Q14. 原来公司相关:

Q15. 原来公司团队大小

Q16. 原来公司是做什么的

Q17. 薪资情况

Q18. 为什么小公司没有离开

Q19. 找公司最看重什么?

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值