20170910 头条笔试

算法岗


【改错题】

二分查找
http://blog.csdn.net/v_july_v/article/details/7093204

//首先要把握下面几个要点:
//right=n-1 => while(left <= right) => right=middle-1;
//right=n   => while(left <  right) => right=middle;
//middle的计算不能写在while循环外,否则无法得到更新。
int binary_search(int array[],int n,int value)
{int left=0;int right=n-1;//如果这里是int right = n 的话,那么下面有两处地方需要修改,以保证一一对应://1、下面循环的条件则是while(left < right)//2、循环内当array[middle]>value 的时候,right = midwhile (left<=right)         //循环条件,适时而变{int middle=left + ((right-left)>>1);  //防止溢出,移位也更高效。同时,每次循环都需要更新。if (array[middle]>value){right =middle-1;   //right赋值,适时而变} else if(array[middle]<value){left=middle+1;}elsereturn middle;  //可能会有读者认为刚开始时就要判断相等,但毕竟数组中不相等的情况更多//如果每次循环都判断一下是否相等,将耗费时间}return -1;
}

题目没有全部记得,循环体基本上按照上述思路改的。然后题目里还说了如果有多个相同元素,取最后一个,所以加了一段:

int len = data.size();//惨了惨了 不该写这句的
while(mid+1<len && data[mid+1] == target)mid++

题目里面有直接将vector的size方法直接赋给int类型的变量,其实这样是会引起warning的,因为size方法返回的其实是size_type类型,并不是int类型。在不同的机器上可能会出现不同结果。虽然一般都能侥幸过……

【编程题】

1、手串。

/** 请完成下面这个函数,实现题目要求的功能 **/
/** 当然,你也可以不按照这个模板来作答,完全按照自己的想法来 ^-^  **/#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <iostream>
using namespace std;int strand[10010][51];
int color_list[51];int main()
{int n,m,c;scanf("%d", &n);scanf("%d", &m);scanf("%d", &c);//initfor (int i=0;i<n;i++){int len=0,color=0;cin>>len;for (int j=0;j<len;j++){cin>>color;strand[i][color]=1;}}int ret=0;//do processfor(int i=0;i<n;i++){for(int j=1;j<51;j++){if (strand[i][j] == 1 && color_list[j]==0){for(int k=1;k<m;k++){int column = ( i+k )%n;if(strand[column][j]==1){ret++;color_list[j]=1;break;}}}}}cout<<ret<<endl;}

2、兴趣计数。

#include <vector>
#include <iostream>using namespace std;int users[300010];
int query[300010][3];int query_num(int l,int r,int k)
{int ret=0;for(int i=l;i<=r;i++){if(users[i]==k)ret++;}return ret;
}int main()
{//initint n,q;cin >> n;for (int i=1;i<=n;i++)cin>>users[i];cin>>q;for (int i=0;i<q;i++){cin>>query[i][0];cin>>query[i][1];cin>>query[i][2];}//processfor(int i=0;i<q;i++){cout<<query_num(query[i][0],query[i][1],query[i][2])<<endl;}}

附加1【编程题】

输出3骗了15%……

附加2【设计题】

今日头条会根据用户的浏览行为、内容偏好等信息,为每个用户抽象出一个标签化的用户画像,用于内容推荐。用户画像的存储、高并发访问,是推荐系统的重要环节之一。现在请你给出一个用户画像存储、访问方案,设计的时候请考虑一下几个方面:

  • 用户画像如何存储
  • 如何保证在线高并发、低延迟的访问
  • 机器宕机、负载均衡问题
  • 如果用户增长很快,在你的方案下,该如何扩容

1、建立用户关系映射表,用户和标签为常量,关系为映射。保存用户画像最好使用缓存,比如memcached,同时后端要落地到DB。
2、有了内存缓存的话,访问速度自然会有提升,除此之外,还要提高缓存的利用率,这样请求不会到DB去请求。3、同时还要减少单机查询流量,将不同用户分配到不同的机器上,可以采用分布式,比如按照用户的地区、ID的号段进行分开,这样每个机器的请求都是独立的,可以命中缓存,提高系统的性能。
4、一致性哈希,保证节点变化后用户访问的机器不变,比如之前在1号机器访问的用户还是到1号机器。

2018今日头条秋招 笔试 (2017/09/10)相关推荐

  1. 2018今日头条春招面试题

    一.打印蛇形矩阵 给定二维数组a[N][M],按照回字形打印数组中的数值. 例如: 1 2 3 4 5 6 7 8 9打印为 1 2 3 6 9 8 7 4 5 思路一:一圈一圈地走,如上例中,最外圈 ...

  2. 2018年网易秋招笔试真题——游历魔法王国

    链接:https://www.nowcoder.com/questionTerminal/923b9dacf8544e4e83d5e22f5a0e731a 来源:牛客网 魔法王国一共有n个城市,编号为 ...

  3. 【笔试题】京东2017秋招笔试真题

    笔试题 京东2017秋招笔试真题 1.进制均值 时间限制 C/C++语言 1000MS;其他语言 3000MS 内存限制 C/C++语言 65536KB;其他语言 589824KB 题目描述 尽管是一 ...

  4. 美团点评2017秋招笔试编程题

    美团点评2017秋招笔试编程题 1, 大富翁游戏,玩家根据骰子的点数决定走的步数,即骰子点数为1时可以走一步,点数为2时可以走两步,点数为n时可以走n步.求玩家走到第n步(n<=骰子最大点数且是 ...

  5. 腾讯2018秋招笔试真题(2)

    腾讯2018秋招笔试真题 3.画家小Q [题目描述]画家小 Q 又开始他的艺术创作.小 Q 拿出了一块有 NxM 像素格的画板, 画板初始状态是空白 的,用'X'表示. 小 Q 有他独特的绘画技巧,每 ...

  6. 腾讯2018秋招笔试真题(1)

    腾讯2018秋招笔试真题 小Q的歌单 [题目描述]小 Q 有 X 首长度为 A 的不同的歌和 Y 首长度为 B 的不同的歌,现在小 Q 想用这些歌组成一个 总长度正好为 K 的歌单,每首歌最多只能在歌 ...

  7. 腾讯2018秋招笔试真题——安排机器

    本文参考自腾讯2018秋招笔试真题--安排机器 查看原文: 原文地址 题目描述:小Q的公司最近接到m个任务,第i个任务需要Xi的时间去完成,难度等级为yi.                 小Q拥有n ...

  8. 2018年秋招笔试面试---小学渣求职历险记(深圳篇)

    前文导读:2018年秋招笔试面试----小学渣求职历险记(中南篇) 我从来没有去过深圳,每次都是从男友那里了解到关于深圳的只言片语,说深圳开放,深圳包容,深圳如何如何-.反正我内心是不以为然的,眼见为 ...

  9. 滴滴出行2017秋招笔试真题-编程题汇总_Java实现

    滴滴出行2017秋招笔试真题-编程题汇总_Java实现 注:有的题参考别人的思路,用我最容易理解的代码编的程序,所以可以不能最优的解法,后续我会进行更新,只是一个思路,我的笔记而已,所以不喜勿喷~~~ ...

最新文章

  1. linux内存布局及页面映射
  2. 什么是RSS订阅 Really Simple Syndication(聚合)
  3. 免费!「神策 2021 数据驱动大会」西安大数据技术专场来袭
  4. Elasticsearch如何物理删除给定期限的历史数据?
  5. 面试题:根据Unix时间戳计算时间
  6. sql2008能否打开mysql数据库_mysql数据库数据能不能导入到sql server中
  7. 【Flink】 Flink 源码之 SQL 执行流程
  8. 致命错误: 在类路径或引导类路径中找不到程序包 java.lang_如何提升店铺动态评分 需要提升可以找我...
  9. chmod命令的用法
  10. 【转】Nginx双机热备高可用解决方案【二】
  11. eclipse安装教程2020版(解决官网下载的安装包打开无响应的问题)
  12. .Net操作Office总结一 - 使用VS2010自带的Office模板进行开发
  13. 旧手机物联网_为了能让你的智能手机用十年,他们给旧手机做了一个操作系统...
  14. win7 64位纯净版系统下载
  15. 【翻译论文】A Progressive Morphological Filter for Removing Nonground Measurements From Airborne LIDAR Dat
  16. 上门洗车App 竟然是块大肥肉!
  17. 【CTA系列】Kelly公式在最优f问题上的应用
  18. 虚拟服务器virt,virt-install error,主机不支持任何虚拟化选项
  19. mac使用的pd虚拟机window黑屏 ---已解决
  20. JS 面试问题: 手写 new

热门文章

  1. 郭明祺:Face ID会否用在所有iPhone上,就看你们了!
  2. Gimbal Lock
  3. Memory System - Cache、DRAM、Disk学习笔记
  4. linux怎么查看硬盘读写数据,Linux查看硬盘读写情况(汇总版)
  5. telnet:Login incorrect
  6. 基于单片机的录音笔电路方案设计(毕业设计资料)
  7. BZOJ.1132.[POI2008]Tro(极角排序)
  8. C++程序设计——十二
  9. [转]经验分享:我的JavaEE学习道路
  10. 2017年度计划中期自我反省