我是通过angelist申请的。当我们通过电话讨论问题时,我被要求在 collabedit 上编写代码。面试官直接跳到技术问题,没有告诉我你自己。
一季度。用你最喜欢的编程语言编写一个程序来计算 power(x, n)。
答:我将问题划分为大小为 (y/2) 的子问题,并递归调用这些子问题。然后他让我进一步优化它。我尝试了 memoization 和 dp,然后他说这里不需要 memoization 因为一个子问题只会解决一次。
Q2。我在上面的问题中使用了 hashmap,然后他问了我关于 hashmap 的内部实现、插入复杂度等。
Q3。哈希图中如何防止冲突,什么是哈希函数等。
第 4 季度。您将获得一个二叉树,以锯齿形形式打印级别顺序遍历。
Ans:我通过先打印级别顺序然后在需要的地方反转来做到这一点。我只需要编写伪代码。我无法向他解释递归。
Q5.问 Javascript-异步编程,NodeJS 中的事件循环,问我以下 JS 程序的输出:-
for(var i=0;i<10;i++)
setTimeout(console.log(i), 10);
如果将 setTimeout 替换为 setTimeInterval 会发生什么?
如果 var i=0 替换为 let i=0 会发生什么(回答:会产生错误)
JavaScript 中的闭包是什么?
Q6. SQL 和 NOSQL 数据库有什么区别?像Mongodb这样的NOSQL数据库的优势?我们可以在 NOSQL 中使用关系数据库吗?
Q7.一些常见问题,例如什么是 MVC、AJAX、HTTP 保持活动状态、git pull 和 git fetch 之间的区别等。
Q8.问了我在简历中提到的问题,比如什么是 k 折交叉验证、AngularJS 等。
接到电话 15 分钟后,我收到一封邮件,说他们没有与我的经验和技能相匹配的好职位。我的面试很顺利,但我认为我缺乏 JavaScript 知识和糟糕的网络连接对面试官产生了负面影响。