特斯拉社招

上海 Sr. Software Engineer,C#/Java

笔试

是英语题目,且给的平台Codility加载有点慢。

数据库

给两个表,一个是题目和分数,另一个是提交的题目、结果是否正确。取出每一个题目提交的次数、正确的次数、得的总分,按得分从大到小、如果相同按题目字典序

select test_groups.name as name,
count(*) as all_test_cases,
count(if(test_cases.status="OK", 1, 0)) as passed_test_cases,
sum(if(test_cases.status="OK", test_cases.test_value, 0)) as total_value
from test_groups left join test_cases
on test_groups.name = test_cases.group_name
group by test_groups.name
order by total_value desc, name

只有PostgreSQL和SQLite,但是我只熟悉mySQL有点难办。

字符串

给一个字符串,问最多可以插入多少个a,使其不会出现连续3个a。如果给的字符串已经有aaa则返回-1。

遍历,出现a则tmp++,不是a则ans += 2 - tmp,tmp >= 3返回-1。

前缀和

给一个数组,求所有和为0的子数组的数量。长度范围1e5,答案超过1e9返回-1。

遍历求一个sum前缀和数组,将每个sum[i]保存在map里,如果sum[i]出现过则ans += map.get(sum[i]);并且对应的value++。


一点建议
赞赏