一、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. 找公司最看重什么?