4月14日,我只是在官网填了一下个人信息,还没有上传简历,当晚就给我打过电话来问我是否还在考虑实习,要不要来面试。总体来说节奏紧凑,三轮技术面+一轮hr面在3天内面完并确认。
一面
似乎是普通员工来面的,使用牛客网面试系统。
先是用牛客网环境手写程序题:
- 冒泡排序和删除倒数第N个链表节点。题目不难,但是需要注意边界情况和内存泄露;此外问了冒泡在大部分已经排好序的情况下的优化问题(在遍历时候如果没有发生过swap那就是已经排好序了,跳出即可)。
之后就是口头问答:
- 个人介绍。我讲了基本信息、个人关键词和项目经历(着重讲了我独立全栈开发的一个沙盘系统)三个部分。
- 项目经历中最重要的挑战。我讲了从零开始快速学习、业务复杂后的重构和mvc的应用、认识到同步问题并解决。
- os方面
- 堆和栈分别干啥的,程序装载到内存的过程
- 进程和线程的区别
- 网络方面
- tcp的三次握手和四次挥手过程
- https的整个过程、非对称加密的优劣
- 设计模式知道哪些,各自有啥应用
二面
应该是Flutter组的leader来面的(因为我在简历和一面中提到了这个意向)。直接口头问答:
- 个人介绍
- 然后开始非常详细的问了项目:(因为我的项目是轻前端重后端的,所以后端问得多)
- 实现上面临的挑战
- 前后端部署,使用了什么技术栈
- 前后端交互中get和post的比例,他们的实现方法
- 后端使用的设计模式
- 数据库设计
- 使用中的同步问题
- 项目对于并发的处理
- 路由怎么设计的
- 异常处理怎么做的
- 然后问了移动端开发尤其是Flutter的问题:
- Flutter项目经历,为什么选用Flutter
- Flutter的生命周期
- Flutter的底层逻辑,渲染过程,和RN的对比(没答上来哈哈哈
- 然后和我分享了很多对于Flutter技术和相关就业的看法
- 接着让我手写了一个单例模式(面试官说算法题大家都刷过了分辨不出来),我写了懒汉式之后问我如何解决同步问题
- 问自己认为最大的优点
- 实习预期的时间,除了暑期是否还会有其他的
三面
似乎是客户端通用组的leader。直接口头问答:
-
个人介绍
-
详细问了项目:
- 后端用了什么设计模式
- 后端用的数据库,用的引擎。顺着就问了我B+树和B-树的区别、mysql使用哪个树、为什么
- 如何部署的
-
tcp三次握手,以及tcp发出的包中序列号和ACK是怎么来的
-
https的整个过程
-
安卓的通知机制怎么实现
-
安卓的handler是什么
-
hashmap怎么实现的。如何减少冲突
-
之后直接就说hr下午会来联系我的
HR面
- 确认个人信息
- 一些行为学测试:
- 两年内面临最大的困难,如何应对的(于是我又把我的项目拿出来,除了开发以外还讲了之前的规则制定和后续的组织测试)。问了这个过程中和同伴交流合作的方式和一些细节
- 面临过最大的失败,这个过程中心态如何变化的,以及带来的启发
- 假设给offer了,入职前会从什么渠道哪些方式来适应
- 自己最大的优缺点
- 确认实习时间
- 问了我是否有其他offer,具体打算如何抉择
- 之后就说很不错会在2周内offer call,这期间尽快确定要不要来,加了微信
总结
- 项目经历非常重要,会不停的详细地问
- 通用基础知识很重要,且要理解
- 设计模式是浙大专业课程提交较少的,需要额外学习
- 有明确的意向比较讨喜