注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
昨天刚完成的Karat面,一个黑人小哥,前5分钟互相介绍,之后的15分钟一直在问我以前做的项目。问的比较详细,需要讲一个觉得做的不错的项目,说清楚项目的架构,我完成的是那个部分,遇到了什么困难,怎么解决的。
之后的40分钟写题。我面的这个题不是简书的这个总结里的 但跟那个门禁卡的题比较像,不知道是不是新题。一共两道。我申请的前端职位,所以用JS写的。只是一个workable solution,比较糙,大家参考看看吧
第一题:
Suppose we have an unsorted log file of accesses to web resources. Each log entry consists of an access time, the ID of the user making the access, and the resource ID.
The access time is represented as seconds since 00:00:00, and all times are assumed to be in the same day.
Example:
logs1 = [
["58523", "user_1", "resource_1"],
["62314", "user_2", "resource_2"],
["54001", "user_1", "resource_3"],
["200", "user_6", "resource_5"],
["215", "user_6", "resource_4"],
["54060", "user_2", "resource_3"],
["53760", "user_3", "resource_3"],
["58522", "user_22", "resource_1"],
["53651", "user_5", "resource_3"],
["2", "user_6", "resource_1"],
["100", "user_6", "resource_6"],
["400", "user_7", "resimes] of map) {
times.sort((a, b) => parseInt(a) - parseInt(b));
let temp = [...result];
result[1] = Math.max(result[1], getFiveMinsMax(times));
if (temp[1] !== result[1]) {
result[0] = resource;
}
}
return result;
}
var getFiveMinsMax = function(times) {
if (!times || times.length == 0) {
return 0;
}
let count = 0;
// console.log({ times })
for (let i = 0; i < times.length; i++) {
let j = i + 1;
var tempCount = 1;
while (j < times.length && parseInt(times[j]) - parseInt(times[i]) <= 300) {
tempCount += 1;
j++;
}
count = Math.max(tempCount, count);
}
return count;
}
console.log(getMax(logs1));
|