在小一个月前考研成绩出来之后,经过长时间的纠结和激烈的思想斗争,决定先找一份工作,再做打算,这些天来大大小小经历了多次远程面试/笔试(A-H),结合去年的几次实习面试(X-Z),现在慢慢总结一下,吸取教训,展望未来。

总的来说,小公司更希望应聘者技能熟练,以便快速融入技术团队创造价值;而大公司更侧重算法/基础方面的考察,更多关注潜力和人才培养。

A公司 – Python开发

一家国内小有名气的互联网公司,2015年成立,地理位置好。

视频面试在牛客网进行,自我介绍与情况了解之后,开始——

  • 计算列表中各元素的个数

    • 具体询问了字典的索引的时间复杂度

    当时有点被问懵了,想了半天,其实是哈希,复杂度O(1)呀!

    参考资料:“>python基本数据类型的时间复杂度

  • datetime库的使用:按规定格式表示次日的当前时间

    • 我只写了个大概,但是关键函数名timedelta()和strftime()都没写对,其实这方面实现的时候确实需要查文档……
  • 字典中的keys按values排序

    • 思考了很久……觉得得用并查集和排序,但是又觉得有更好的内置办法
      sorted(dict.items(), key = lambda kv:(kv[1], kv[0])))
  • Python的GIL锁

    GIL是python的全局解释器锁,同一进程中假如有多个线程运行,一个线程在运行python程序的时候会霸占python解释器(加了一把锁即GIL),使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。

  • Django的Baseview

B公司 – PHP客服

一家跨国公司,CN有两个Team,分别在BJ和SZ;一个Team约10人

投简历的时候以为是开发岗,但是后来在与HR聊天才发现是客服。

  • 需要做一份英文支付流程的策划
  • 需要准备英文简历

但是后来没有再联系,在心里把B公司拒掉了。

C公司 – 爬虫工程师

一家初创小公司,做咨询业务的外企。

约了隔离期结束后线下面试,内容是类似Leetcode的题目(那为什么一定要线下?)。

总之,后来没再联系了。

D公司 – PHP工程师

一家小有名气的互联网公司,我也是用户之一。

1、两年以上php开发经验,了解主流框架;
2、熟悉mysql的使用和优化;
3、熟悉缓存技术、非关系型数据库、负载均衡、消息队列、ELK等常用技术;
4、了解基本的服务器部署,能够配置Nginx、php-fpm;

有一个问卷星上的笔试。

  • 基础

    • 链表倒置
    class Node:
        def __init__(self, x):
            self.val = x
            self.next = None
    def Reverse(node):
        cursor_new = node
        cursor_old = node.next
        while cursor_old.next:
            tmp = cursor_old
            cursor_old = cursor_old.next
            tmp.next = cursor_new
            cursor_new = tmp
        cursor_old.next = cursor_new
        return cursor_new
    • 数组元素循环后移
    arr = [1,2,3,4,5]
    tmp1, tmp2 = arr[-1], arr[-2]
    for i in range(len(arr)-1, 1, -1):
        arr[i] = arr[i-2]
    arr[0], arr[1] =tmp2, tmp1
    • 称小球问题
    • 概率题
  • PHP相关

    • 数组的基础题/计算
    • 二维数组排序 multisort
    • 面向对象的简介:封装、继承、多态
    • 一个算法:双指针遍历有序数组找出相同元素组数
  • Mysql相关

    • 事务的四种隔离
    • SQL注入简介
    • 从200W条数据中,留下1000条最新的,删去其他
    • 我的解法是维护一个大小为1000的小根堆
    • varchar和char的对比

面试的话聊得很轻松,涉及到了Cookies/Session,HTTP等内容。

  • PHP-FPM的原理
  • Mysql的InnoDB的数据结构是B-Tree
  • 思考扫码登录如何实现
    • HTTP长连接(我的第一个答案)
    • js定时访问服务器(我觉得不优雅的答案,也是正确答案)

E公司 – 爬虫工程师

一家规模很大但不算有名的公司。

HR联系我了解情况,但是我的回答有点过于现实,感觉和对方的要求不太对味,没有后续。

F公司 – PHP工程师

一家在线教育公司,团队30人左右。

HR提到工作时间日常朝十晚十,薪资10k-14k ,约隔离期满后面试,还提供了毕业证号。

针对这个工作时间,应该是不会再联系了。

G公司 – 爬虫工程师

一家小的咨询公司,总部在SH,技术团队在BJ。

居然在约定的面试时间鸽了我。

显然不会有后续了。

H公司 – Python工程师

一家大厂的子部门。

在Boss直聘上主动找到我,先提供手机号和身份证号在牛客网做了机试,莫名不难。

随后做了一轮技术测试。

之后就是一轮面试,先介绍一下做过的项目,然后问了一些不算太难的问题。

  • Python
    • 线程/进程/GIL锁
  • Mysql
    • Update命令
  • Shell
    • 在文件夹目录中找符合要求的文件并list(一行命令)

之后几天等到了HR面,主要就是对个人背景进行了一些深挖,和岗位的介绍。

第二天是Boss面试,具体地介绍了所有做过的项目,关键处还加以提问。

目前,在等待Offer中……

X公司 – 爬虫工程师

一家初创AI公司,位于中关村。

先做了一份笔试题,关于Python的面向对象,算法,以及Shell相关用法

面试主要询问做过什么爬虫项目/网站,以及一些反爬措施。

聊得很好,最后也给了口头实习offer,但因为薪资原因/工作时间最终婉拒,现在看来十分后悔。

Y公司 – 后端开发

一家规模中等的创新公司,小有名气。

第一面技术面试考察了一些算法,手写代码,很顺利。

第二名是项目Boss,让我讲讲做过的项目,同时根据我的情况决定调岗(开始投的爬虫工程师)。

不过后来无疾而终,没有后续。

Z公司 – 后端开发

有名大公司,行业翘楚。

第一面技术面试进行顺利,算法向,手写代码,有些只需要说出思路。

第二面偏应用一些,包括

  • LRU算法的设计
  • Mysql的事务、性质、锁
  • Mysql视图语句

但是第二面表现不佳,从内推同学得到的反馈是基础不够好,最终失败。