目录

  • 总结:
  • 丁香园一面(技术面)
    • 提问:
      • 1. 自我介绍
      • 2. 之前做的项目
      • 3. python多进程多线程的区别
      • python生成器迭代器
      • python装饰器
      • python浅复制深复制
      • python的数据结构
      • python的sort排序,哪个函数
      • 说一下常用的python库
      • mysql leftjoin rightjoin unionjoin的区别
      • xpath取第一个和最后一个元素
      • redis的数据结构
      • git工具的使用,git add是啥,常用的命令
      • 有几百个中英文的新闻网站,怎么抓取
    • 反问:
  • 丁香园二面(HR面)

总结:

技术面时感觉自己八股文没有准备充分,好多问题没回答上来。但幸好在讲项目经历时准备比较充分,最后还是通过技术面,顺利拿到了offer~~。 不过因为还是以python爬虫为主的岗位,以后更想做ETL数据开发。这次就当积累下面试经验了~~ 这波面试40分钟血赚阿2333


丁香园一面(技术面)

提问:

1. 自我介绍


2. 之前做的项目


3. python多进程多线程的区别

  • 进程是资源分配的基本单位,线程是CPU执行和调度的基本单位;
  • CPU上真正执行的是线程,线程比进程轻量,其切换和调度代价比进程要小;

多线程还是多进程使用场景

  • CPU密集型:程序需要占用CPU进行大量的运算和数据处理;
  • I/O密集型:程序中需要频繁的进行I/O操作;例如网络中socket数据传输和读取等;
  • 由于python多线程并不是并行执行,因此较适合与I/O密集型程序,多进程并行执行适用于CPU密集型程序;

通信/同步方式:

  • 进程:
    通信方式:管道,FIFO,消息队列,信号,共享内存,socket,stream流;
    同步方式:PV信号量,管程
  • 线程:
    通信方式:位于同一进程的线程共享进程资源,因此线程间没有类似于进程间用于数据传递的通信方式,线程间的通信主要是用于线程同步。
    同步方式:互斥锁,递归锁,条件变量,信号量

其他

  • 线程间对于共享的进程数据需要考虑线程安全问题,由于进程之间是隔离的,拥有独立的内存空间资源,相对比较安全,只能通过上面列出的IPC(Inter-Process
    Communication)进行数据传输;

  • 系统有一个个进程组成,每个进程包含代码段、数据段、堆空间和栈空间,以及操作系统共享部分 ,有等待,就绪和运行三种状态;

  • 一个进程可以包含多个线程,线程之间共享进程的资源(文件描述符、全局变量、堆空间等),寄存器变量和栈空间等是线程私有的;

  • 操作系统中一个进程挂掉不会影响其他进程,如果一个进程中的某个线程挂掉而且OS对线程的支持是多对一模型,那么会导致当前进程挂掉;

  • 如果CPU和系统支持多线程与多进程,多个进程并行执行的同时,每个进程中的线程也可以并行执行,这样才能最大限度的榨取硬件的性能;

  • 线程和进程的上下文切换
    进程切换过程切换牵涉到非常多的东西,寄存器内容保存到任务状态段TSS,切换页表,堆栈等。简单来说可以分为下面两步:

  • 页全局目录切换,使CPU到新进程的线性地址空间寻址;
    切换内核态堆栈和硬件上下文,硬件上下文包含CPU寄存器的内容,存放在TSS中;

  • 线程运行于进程地址空间,切换过程不涉及到空间的变换,只牵涉到第二步;


python生成器迭代器

  • 迭代器:是访问集合元素的一种方式,是一个可以记住遍历的位置的对象,迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
    迭代器有两个基本的方法:iter() 和 next()
    iter()用于生成迭代器对象,next()用于获取迭代器的下一个元素
  • 生成器:是一种一边循环一边计算的机制,在循环的过程中不断推算出后续的元素,这样就不必创建完整的list,从而节省大量的空间。
    具体来说,使用了 yield 的函数被称为生成器,跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,可以说生成器就是一个迭代器。在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。

python装饰器

Python的装饰器本质上是一个嵌套函数,它接受被装饰的函数(func)作为参数,并返回一个包装过的函数。这样我们可以在不改变被装饰函数的代码的情况下给被装饰函数或程序添加新的功能。Python的装饰器广泛应用于缓存、权限校验(如django中的@login_required和@permission_required装饰器)、性能测试(比如统计一段程序的运行时间)和插入日志等应用场景。有了装饰器,我们就可以抽离出大量与函数功能本身无关的代码,增加一个函数的重用性。


python浅复制深复制


python的数据结构


python的sort排序,哪个函数


说一下常用的python库


mysql leftjoin rightjoin unionjoin的区别


xpath取第一个和最后一个元素


redis的数据结构


git工具的使用,git add是啥,常用的命令


有几百个中英文的新闻网站,怎么抓取


反问:

  1. 从内推我的同事那了解到,贵公司拥有一个有编制,有规模的专业爬虫团队。所以我想了解下团队的工作内容,或者说工作流程。

  1. 还有就是想了解下实习的薪资待遇

丁香园二面(HR面)

技术面时后大约三天后就收到了HR姐姐的电话(技术面能过真是奇迹)。

HR姐姐还是非常和善的,总体就给我说了下薪资待遇,公司周边的环境,租房情况,工作内容,未来的职业发展情况。

不过因为本人并不想去实习,纯粹体验技术面试刷经验,全程有点心虚23333,一直点头说 好的好的

当晚就收到了offer邮件,最后发现还多给我上调了500薪资,然而还是不想去。。。。愧疚++

【丁香园】高级爬虫工程师面试面经 技术面+HR面 已拿offer相关推荐

  1. Java高级开发工程师面试笔记

    最近在复习面试相关的知识点,然后做笔记,后期(大概在2018.02.01)会分享给大家,尽自己最大的努力做到最好,还希望到时候大家能给予建议和补充 ----------------2018.03.05 ...

  2. java高级软件工程师面试_高级软件工程师的新面试问题

    java高级软件工程师面试 I'm putting together some practice interview questions for a friend who lost his job. ...

  3. 【iOS高级资深工程师面试篇】⑪、2022年,金九银十我为你准备了《iOS高级资深工程师面试知识总结》 算法部分 字符串反转-链表反转-有序数组组合-Hash算法-查找两个子视图的共同父视图

    iOS高级资深工程师面试篇系列 - 已更新3篇 UI部分1/3 -UITableView-事件传递&视图响应 UI部分2/3 -图像显示原理-UI卡顿&掉帧 UI部分3/3 -UIVi ...

  4. 【iOS高级资深工程师面试篇】①、2022年,金九银十我为你准备了《iOS高级资深工程师面试知识总结》 UI部分2/3 -图像显示原理-UI卡顿掉帧

    iOS高级资深工程师面试篇系列 - 已更新3篇 UI部分1/3 -UITableView-事件传递&视图响应 UI部分2/3 -图像显示原理-UI卡顿&掉帧 UI部分3/3 -UIVi ...

  5. 【iOS高级资深工程师面试篇】⑫、2022年,金九银十我为你准备了《iOS高级资深工程师面试知识总结》 第三方库部分 AFNetworking-SDWebImageView-ReactiveCocoa

    iOS高级资深工程师面试篇系列 - 已更新3篇 UI部分1/3 -UITableView-事件传递&视图响应 UI部分2/3 -图像显示原理-UI卡顿&掉帧 UI部分3/3 -UIVi ...

  6. 【iOS高级资深工程师面试篇】①、2022年,金九银十我为你准备了《iOS高级资深工程师面试知识总结》 UI部分3/3 -UIView绘制原理-离屏渲染

    iOS高级资深工程师面试篇系列 - 已更新3篇 UI部分1/3 -UITableView-事件传递&视图响应 UI部分2/3 -图像显示原理-UI卡顿&掉帧 UI部分3/3 -UIVi ...

  7. 【iOS高级资深工程师面试篇】②、2022年,金九银十我为你准备了《iOS高级资深工程师面试知识总结》 Objective-C语言特性部分1/2 分类-关联对象-扩展-代理

    iOS高级资深工程师面试篇系列 - 已更新3篇 UI部分1/3 -UITableView-事件传递&视图响应 UI部分2/3 -图像显示原理-UI卡顿&掉帧 UI部分3/3 -UIVi ...

  8. 【iOS高级资深工程师面试篇】④、2022年,金九银十我为你准备了《iOS高级资深工程师面试知识总结》 内存管理部分2/2 引用计数-弱引用-自动释放池-循环引用

    iOS高级资深工程师面试篇系列 - 已更新3篇 UI部分1/3 -UITableView-事件传递&视图响应 UI部分2/3 -图像显示原理-UI卡顿&掉帧 UI部分3/3 -UIVi ...

  9. python爬虫工程师是什么级别_高级爬虫工程师能干什么 高级爬虫工程师有前途吗数...

    高级爬虫工程师有前途吗数据采集,数据清洗等等都是大数据分析,很屌很酷拽的好不好.大数据又是人工智方面的饲养员,天天打猪草,很辛苦的. 现在有很多软件在逐步替代爬虫工程师做的事,比如采集数据原先你得请一 ...

最新文章

  1. Python设计模式-单例模式
  2. 比尔盖茨聘请投资高手,26年亏掉4300亿美金!
  3. OpenCV 中的 Scalar 类、Vec类
  4. C++实现Linux下弹出U盘的方法
  5. long 雪花算法_雪花算法
  6. 用 Go 构建一个区块链 -- Part 5: 地址 1
  7. 数字化转型知识方法系列之五:数字化转型战略
  8. 怎么安装python3.7 setuptools与pip_如何安装python到setuptools、pip工具安装
  9. 用python批量下载网络图片_python批量下载图片的三种方法
  10. PCL之ubuntu安装CloudCompare
  11. Ubuntu中启用关闭Network-manager网络设置问题! 【Server版本】
  12. 人像处理:不要用减淡工具了!用柔光叠加去擦!加深也不如正片叠底
  13. spring+ibatis+注解开发
  14. DN值、地表反射率、 表观反射率、发射率、辐射亮度、亮温名词解释
  15. 51Nod 1182
  16. wsl使用可视化界面_WSL 科学计算〇 | 适合计算化学的环境配置
  17. paip.提升安全性----.net C#源码防止反编译以及源码加密
  18. SQL的多表查询(笛卡尔积原理)
  19. python get请求下载excel,前端开发,使用get和post方式下载excel表格
  20. CSRF - 跨站请求伪造

热门文章

  1. 微信公众号开发测试部署步骤
  2. 使用aspose-word将word转化为pdf,循环添加表格、数据、图片
  3. 【转载】一些动态规划的题目
  4. 2022年建筑材料行业报告:防水新规正式出台,行业空间扩容
  5. 7、网络编程-TCP简介
  6. 软件测试体系学习及构建(3)-Windows系统常用DOS命令和使用
  7. adb devices检测不到小米Note 3的问题
  8. 赛效:视频怎么转音频怎么转
  9. chatgpt人工智能AI付费对话自适应源码openai写代码写论文付费问答3.5接口
  10. BEVFormer-accelerate:基于 EasyCV 加速 BEVFormer