记第一次面试

想着这个大三暑假在合肥本地找个实习,就在实习僧投了好几家 Java 实习生,可等了三天都没反应。。然后听说 Boss 直聘比较好,于是又上 Boss 直聘投了两家。可信息全部有去无回。。

不过说来运气也好,周五的时候,Boss 直聘上就有位面试官主动联系到我,招 Python 爬虫工程师,真是意外之喜。
然后今天电话里聊了聊,也没做啥准备,下午就进行了一次简单的面试。感觉答的还挺好的,面试官问的也简单,(远没网上各 BAT 面经那么恐怖)下面我简单地回顾一下,就只写我还记得的了:

  1. 什么是 OOP?
    这个我答得很菜,不知道怎么解释。。就大概说了 OOP 是把数据和方法绑到一起,然后又说了继承的一些东西。。但是感觉自己解释地很不清楚。

  2. Java 中的 Over Load 是什么?
    方法重载,同名的方法,也能通过传入参数的不同(方法签名),调用不同的方法。

  3. 你现在 Java 学到了什么程度?
    我回答说目前正在学框架,应该是能花一个星期把框架学好,到能做简单的后台的程度。

  4. 你说你 Python 是看英文文档学的,为什么会想看英文文档?
    我当时就回答了英文资料最前沿。
    但是现在看应该能说得更清楚:Python 官方文档没有中文的,而要学好 Python,官方文档是不可避免的。日常写代码,我都会习惯到 Github 上找找是不是已经有相关的项目了,而这些开源项目也大部分只有英文说明。
    因此或早或晚都是要接触英文的,所以就选择提早接触了。

  5. 什么叫关系数据库?和非关系数据库有何差别?
    关系数据库,也就是以关系为核心来组织数据的数据库。它的理念是把数据尽可能拆分成多个表,然后不同的表之间通过某种关系来连接起来。这样的好处是如果数据的某一部分需要变动,只需要变动该数据所处的表就行,而不会需要重新设计整个数据库。
    非关系型数据库,好像基本都是指 键值数据库。以键为索引来存取数据。键值数据库的好处是简单,没有关系数据库那样复杂的约束。因此速度快,性能更优。

  6. LEFT JOIN 和 RIGHT JOIN 有什么区别?
    LEFT 或是 RIGHT,是由来指示以哪个表为主表的。被作为主表的,表内的所有行都会出现在结果集内,而对应的另一表若没有对应的参数,值就为空。

  7. http 是不是有状态的协议?
    http 是无状态的协议,当客户端发起请求,服务端处理信息后响应该请求,然后一次 http 连接就结束了,下一次的请求和上一次从协议层面上看,是没有任何关系的。
    而且 http 连接只能由客户端发起,如果服务端需要向客户端推送消息,一般做法是由 客户端 http 发起一个长连接不中断,等到 服务端有消息需要推送时,才发回相应。
    可这种做法会对服务器而言,开销太大。因此最近出现了 websocket 协议。(面试时回答地没这么条理清晰,不过说的内容差不多是这样。其实还应该引申一下 cookie 的)

  8. udp 是不是有连接的协议?
    不是,udp 是无连接的,发送方甚至无法知道发出的包是送达了还是丢失了。

  9. Python 的 GC
    这个我没了解过。

  10. Python 的多线程多进程有没有用过?
    用过 threading 和 multiprocessing,不过只是在个人的项目中,因此没遇到过大并发的情况。
    另外 multiprocessing 有一个多线程子模块:multiprocessing.dummy,该模块的 API 和 multiprocessing 完全一致,但是实现的是多线程。因此如果不确定多线程多进程哪个合适的话,可以先用 multiprocessing.dummy 实现,然后和用多进程比较一下,哪个好就用哪个。

  11. Python Web 开发了解多少?
    因为之前一直在学 Java Web,Python 还是用来玩居多,所以没特别了解过。

  12. Python 爬虫有没有学过?
    只是玩过使用 requests 模拟登录知乎 和 下载 bilibili 视频。

  13. 下载 b站 视频的话,视频链接应该是动态的吧。你是怎么抓到视频链接的?
    我并没有直接解析 b站 的网页,而是参考了 Gtihub 上已有的 youtube-dl 和 you-get 的代码,发现它们使用的是 b站提供的内部 api,然后就照搬了过来。

  14. 有没有了解过 selenium?
    用 selenium 模拟浏览器开销也很大,一般来说能不用就不用。而且之前主要还是学 Java,没考虑过爬虫,就没怎么了解过这个。

  15. http 和 https 有何差别?
    http 是明文通信,假设我在我寝室的路由器上安装了嗅探工具,那通过该路由器的所有 http 信息,都能被该嗅探工具抓到,而且讯息内容都是明文。
    而 https 呢,是在 http 上添加了一个安全层协议,请求开始时,会先通过 http 交换公钥,然后才开始真正的通信,讯息是加密的,中间人只能看到密文,而得不到明文。(这里答得不太清楚,其实我也有点忘记 https 证书这些东西了。另外其实还可以说一下用 https 会增加一定的性能开销。)

  16. 你既然说了 websocket,那你对它了解多少?
    我只知道 websocket 是先通过 http 协议建立连接,然后再切换到 websocket 协议层的,具体的用法,还没有了解过。

  17. 冒泡排序是怎么排的?
    这个这么简单的问题,我却发现我不太会表述,总之很笨拙地回答了。内容应该不需要说了。。复杂度是 n 的平方

  18. 二分查找是怎么查找的?
    每查一次,查询范围就减少一半。复杂度是log N

  19. 为啥报了声学专业?
    这个好像是开始的时候问的,我说选声学是高中的时候看科幻小说,小说里描绘地很好,脑子一热就填了。
    专业课学得很差。。
    后面面试官提到他做 .net 八九年了,以前学的是化学专业哈哈。

  20. 工作问题
    面试官提到公司里主要用的是 .net 平台,前后端分离。而我需要负责的,是爬取报表,然后上传报表。

  21. 工作中遇到困难怎么办?
    面试官说干软件这一行的,大部分都内向,其中有些人,有问题了也只会憋着,自己胡乱想方法,或者到最后出问题了才说出来。
    我说我有问题的话,一般会先搜索,看看 stackoverflow 或者 知乎、或者博客 上是不是已经有现成的比较好的解决方法。如果没有,自己又想不出来好办法的话,会向有经验的同事请教。

然后就是工作制是早8点半到晚5点半,中午休息一小时(八小时),休息日是单双周轮休。实习期是三个月,福利需要等到我拿到毕业证。

再然后,就是对很急的大量工作的态度,我这个回答了没体验过不清楚,然后被追问,我想工作再多那也只有强上了啊,不然咋办?

还有性格问题,团队协作问题,稍微聊了聊。

问到以后的打算,是否会在这边长期工作时。我回答开始的想法是先做三年 Java Web 再考虑其他,可现在收到了你的面试,我想如果我入职了,暂时会以 Python 爬虫为主,同时考虑转向 .net。长期工作好像后面没说清,但是我觉得福利好,能学到东西,工资也能达到我的心理预期的话,我会很愿意长期工作。

最后面试官问我有啥想问的,我说我第一次面试,不知道有啥可问的。。
然后想到他在招聘上写的是招有一年以上经验的 Python 工程师,而我啥经验都没,就问了一下。他说我底子不错学起来快,而且工作其实也不难,就是爬个数据再上传个数据。

写得有点乱。。最后面试官说过两天给答复。

第一次面试,感觉答得还算可以。希望能面上。

猜你喜欢

转载自www.cnblogs.com/kirito-c/p/9226183.html