纯存两次电面,求昂赛!

啦啦啦,我又来发面经了!希望发完面经能拿到昂赛!
两次电面的是老题,第一次fire event,第二次valid square

第一面是加拿大office的一个小哥,简单的自我介绍,就开始说题了
先是单线程版,然后加锁,之后锁挪来挪去

感觉大家这道题面经比较集中在后面fire的那个函数上,其实前面register的函数也问了些问题,下面标出来~
public void reg_cb(Callback cb){ m.lock();if(!isFired){ m.unlock(); //why not here queue.offer(cb); m.unlock();//why here}else{ m.unlock();//why here cb.call(); //m.unlock(); why not here}
}
fire函数的问题好多个贴子都说了~我就不讲了 ,个人感觉这个贴子讲的hin好!http://www.1point3acres.com/bbs/thread-299273-1-1.html

然后一周的漫长等待,到我以为我被默剧了的时候,来消息说有二面了

第二面是valid square, 然后有两个面试官,因为有一个在training =-= 我好像经常会遇到这种情况

先是想用四边相等,然后一个角是直角这样装个傻,小哥说你那个求直角的函数真的需要吗?我就想,哇,这是给我机会假装想明白然后用更好的方法啊!
然后我就傻呵呵的装作想了一下,然后说,哦!不用的!我们只要求出每两个点的距离,然后存这些距离到set里,最后看set的size是不是2就好了!小哥说很好,你写吧
然后我就装作没有想到有两个点会重叠的情况,小哥举了两个点重叠的情况,假装恍然大悟,改过来了

结果问题来了,小哥举了三个点是等边三角形然后第四个点到三个顶点都相等长度的例子!!我去,我的代码在利口上是可以过的诶,可能是四个点坐标都是int[]限制没能出现这种问题。。。不过这个情况真的也只有两种距离,所以我说,那可以再判断一个角是不是直角。

于是我补全了直角的函数加了另一个判断条件,感觉小哥全程再复制我的代码然后在别的地方运行,不知道最后的那个临时写的有没有过,不过小哥开始问follow up了

就是n个点会组成几个正方形这样,楼主这个不慌啊,就把n^4,n^3的想法说了一下,然后感觉小哥还让我再想想,就有装作恍然大悟的说出来n^2的方法
然后当时大概还有12分钟这样,小哥说你能写一下代码吗?我就说可以啊!然后马上开始照着自己昨天在草纸上推出的公式开始打代码。。。不过还要装作有思考的样子
然后用n^2的方法把其他两个点的x值求完后,小哥说后面你讲一下就可以了,我就大概说了一下,y也这样求,然后把坐标都存到set里,如果两个点都在set里找得到就count++,最后求出count要除以2
小哥就说嗯嗯不错,给你点时间应该可以写完,然后就让我问问题了,大概说了一下他自己在做flash blade这一块啊什么的,我就随便问了点啥

有点小波折,不过还算是解决了吧,希望能拿到昂赛啊!

希望对大家有帮助!如果觉得有帮助求施舍点[]~

补充内容 (2018-8-21 03:19):
有一点需要补充一下,大家面试前最好想一想要怎么说,比如边长,垂直,直角,对角线之类的。我面试的时候就突然忘记边长咋说了。。。

“我就说可以啊!然后马上开始照着自己昨天在草纸上推出的公式开始打代码。。。不过还要装作有思考的样子”
请问lz怎么知道第二天会考这道题?

鹅。。。因为纯存的18年电面面经只出现过两道啊。。。fire event和valid square。。。一面考了fire event那二面就只剩这一道了吖。。。

昨天刚面完第一面,也是event fire,希望会有第二面,楼主分享的思考过程非常棒!加油!肯定有onsite~

嗯嗯嗯,感觉18年的电面只考过两道,看一下valid square吧,以防万一可以看下happy number和画圆,我考前只看了这三道。然后valid square的follow up代码也一定要熟,有的面试官会叫你直接写的

请问楼主有做oa 吗

有做OA啊,就是7题版

好的,谢谢哈

楼主投的是18年的new grad 岗位吗

有点没理解。。valid square那题,为什么是将count除以2呢?n^2枚举两个点的话,每个正方形会有4次重复计算吧?