Cisco Meraki昂赛 (Fullstack)

一直没人发fullstack岗位的昂赛面筋,发出来攒个人品。。希望对后面两波event的人有用。。
四轮,其中一轮是看demo和聊简历,就不说了,剩下三轮和地里之前有人透露的一样,一轮socket,一轮画圆,一轮js做动图。

socket题:给了一个socket类,其中有accept,listen,read,write等方法,先是让你实现一个server protocol(连接以后发hello,然后发goodbye断开),这个很简单,这一轮难点在于,他的accept和read都是阻塞的,接下来他希望你的server是非阻塞的,就是不能让accept一直等着。面试官会给一个新的API叫做select,可以从一个list<socket>里面找到可以立即连接的socket,利用这个新的API把你的server改成非阻塞的。答案就不说了,大家可以想一想,挺有意思的。基本思想就是调accpet的时候要想办法确保能立即成功。面试官说javascript里面nonblocking的底层实现就是利用这个思想。

画圆:给一个半径r,让你向一个list of point里面放整数点,这些点近似的构成以(0,0)为圆心半径为r的圆。要求是避免floating point operation,所以基本上就是禁止开根号了。基本思路是对于每个y,二分找使得x^2+y^2最接近r^2的|x|。复杂度rlogr。
follow up 1 :要求点与点之间不能有空隙,如何补全。
follow up 2 :利用对称性尽可能减少计算次数。实际上只需要计算1/8圆弧。利用对称轴y=x (y=-x)获得另外一半点,然后根据x轴y轴对称获得另外三个象限里的点。

js作图:给了Google Map上面一个操场,上面有一些红点表示人,初始状态是这些人在操场两侧站成几排,最终状态是这些人到操场中间排出“MERAKI”字样。要求做动画,循环播放这个过程。其实一点也不难,他API给的很足,每一帧的状态都是给好的,你唯一要做的就是把这个过程播放出来。熟练使用js里面的setTimeout和callback function,以及熟悉参数作用域之类的事情就没有问题的。
之后会告诉你有一些红点在这个过程中会瞬移。。就是所谓的噪点,让你把这些噪点的opacity调低。也不是很难,因为他linear regression的方法都给你写好了,直接调用就行了。。。。。。。

大概就是这样了,感觉这家的onsite体验不错,面试官也很好,祝后面去event的亲们好运。

除了js轮都可以自选语言

请问楼主,写JS的时候,是在laptop上写,还是直接在白板上写呢

所有code都是在laptop上写,要运行的。