首先介绍一下自己,本人是非985非211普通一本的CS专业毕业,好在软件工程师对于学校的排名要求不是特别高,更多的看你自己的努力,愿不愿意付出。从大三开始努力刷题一年多后,我终于拿到了一个靠谱的offer,虽然不是什么BAT,但也很满意啦。
扇贝的面试分小作业和面试。我的面试是在一个下午完成的,一共三轮,分为两轮技术面和HR面。
面试前小作业
投完简历筛选过后,你会收到一份邮件要求你做一个小作业,时间是一个星期以内,小作业实现功能后就能去面试了。
我的题目是要求写一个chrome插件。
这种小作业的题目都不会太难,大家提交之前也一定要使功能得到实现,但请切记一定要自己写这个小作业,因为后续的面试中会问到小作业相关问题。
第一轮技术面
第一轮面试各个公司都大同小异吧。我第一轮的遇到的面试官特别友善,一上来就让我自我介绍。套路完了以后就开始出题了,都是lintcode原题。所以在回答的时候是胸有成竹的,在敲代码的时候是美滋滋的。
第一题是给你提供了一段英文语料,要求用c++将文本语料中的拼音和英文分开。
题目描述:http://www.lintcode.com/en/problem/word-break/
参考答案:http://www.jiuzhang.com/solution/word-break/
这道题不用编程,直接回答。回答完后,面试官会对你的回答中的不足提出他的看法,也会问你还有没有别的思路。
第二题是一道英文算法题,大意是给定一个整数数组,找出两个不重叠的子数组A和B,使两个子数组和的差的绝对值|SUM(A) - SUM(B)|最大。
题目描述:http://www.lintcode.com/en/problem/maximum-subarray-difference/
参考答案:http://www.jiuzhang.com/solution/maximum-subarray-difference/
这道题要求编程,虽然这题见过也刷过,但面试毕竟是紧张的,而且敲代码的电脑没有C++语言,只能用JAVA编程。敲的时候一不小心敲错了一个地方,面试官就在旁边还会帮你指正出来,但是我的思路一直在线,所以也得到了最后的正确答案。
代码敲完以后,面试官针对我的简历特别是我做过的两个项目提出了一些细节问题,这部分就要看你自己当时做项目的时候实践的到底怎么样了,还是挺考察自身知识储备的。
第二轮技术面
这一次的面试官相比第一次明显要严肃很多。先是给我的小作业指出了一些问题,然后问我有没有新的思路,不得不说这部分是我面试中回答的最磕磕巴巴的地方,当时交上去自认为还不错的小作业后就再也不想了,导致面试场面一度有些尴尬。
面试官虽然看上去很吓人,但还是放过我了继续出题。
问有1000瓶水,其中一瓶有毒药,已知一只小白鼠喝过毒药后一天之内会死亡,现在给你一天时间,求最少需要多少只小白鼠才能判断出哪瓶是毒药。第一题很简单,二进制思想,答案是10。第二题是在第一题的基础上,把时间从一天改为两天。稍微思考一下也不是很困难,三进制的思想,答案是7只。
第三轮HR面
基本上看到HR的小姐姐就知道offer基本是稳了,小姐姐问了几个很基本的behavior question后就开始向我介绍公司情况和未来规划。
面试结束。
总结
一定要多刷题,扇贝作为一个不是那么知名的公司而言,出的题目还是有些难度的。如果你刷的题目不够多,是一定会慌张的。平时我习惯在lintcode上刷题,它比别的刷题网站的题目要全。网站的 BAT 精选面试 ladder特别好用,从大三开始这一年多一路从简单题刷到难题,到现在因为题目刷的够多了拿到offer,颇有一种打boss通关的感觉。我刷完题会再在www.jiuzhang.com/solutions上对答案,对答案的网站是我做不出题目找答案的时候偶然间发现的,没想到lintcode上每一道题在这里都能找到答案,简直完美。
小作业和做的项目很重要,需要你自己在准备面试的时候去细挖细节,自身的知识储备很重要。
感觉扇贝不是很介意你面试的时候的结果得到最后的解决方法,但是思路一定要对,要有足够的编程能力和热情很重要。
在这里好好写了一篇面经纪念自己拿到的第一份offer,也祝所有和我一样双非的同学们努力刷题,得到自己想要的offer。