文章目录

  • 一、情景回顾
  • 二、线程中 sleep 与 wait 的区别
  • 三、ConcurrentHashMap
  • 四、补充知识 一点资讯面试题
    • 4.1 单链表反转
    • 4.2 球掉落问题
    • 4.3 即时战略游戏编队
    • 4.4 String Shifting
    • 4.5 找数字
    • 4.6 今日头条问答题

一、情景回顾

  • 时间: 2016.9.28 16:00-18:00 19:00-21:00
  • 地点: 山东省网络环境智能计算技术重点实验室
  • 事件: 完美世界笔试 今日头条笔试

今日头条的两道编程题均涉及到大数据量的处理。按照一般方法解题只能够通过30%-40%。而大数据量的处理也正是自己的软肋。

涉及到的知识点如下,仅供参考。

二、线程中 sleep 与 wait 的区别

  • 这两个方法来自不同的类分别是ThreadObject,在java.lang.Thread类中,提供了sleep(),而java.lang.Object类中提供了wait()notify()notifyAll()方法来操作线程。
  • 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
  • waitnotifynotifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用。
  • sleep必须捕获异常,而waitnotifynotifyAll不需要捕获异常。

三、ConcurrentHashMap

HashMap不是线程安全的,ConcurrentHashMap完全允许多个读操作并发进行,读操作并不需要加锁。如果使用传统的技术,如HashMap中的实现,如果允许可以在hash链的中间添加或删除元素,读操作不加锁将得到不一致的数据。

ConcurrentHashMap中,线程对映射表做读操作时,一般情况下不需要加锁就可以完成,对容器做结构性修改的操作才需要加锁。

四、补充知识 一点资讯面试题

4.1 单链表反转

4.2 球掉落问题

时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:

有一幢N(N > 0)层的楼,当从高于某一楼层往下扔玻璃球时,玻璃球会被摔坏,反之,玻璃球保持完好。现在用m(m >
0)颗完全一样的玻璃球,每次从某一楼层往下扔一颗球,来找到这个刚好能使玻璃球摔坏的临界楼层。规定扔碎的玻璃球不可用于下一次试验,求一定能确定这个临界楼层的最少试验次数。主函数已经完成,请完成calcThrowNumber(int,int)函数。

include <stdio.h>
int calcThrowNumber(int numOfFloors, int numOfBalls)
{//implement your code here
}
int main()
{int numOfFloors, numOfBalls;
while(scanf("%d%d", &numOfFloors, &numOfBalls) != EOF) {printf("%d\n", calcThrowNumber(numOfFloors, numOfBalls));
}
}

输入

输入数据为一行,包括两个整数N和m(0 < N <= 10000,0 < m <= 10000)

输出

对于每组测试实例,要求输出最少试验次数。

样例输入

100 3

样例输出

9

4.3 即时战略游戏编队

时间限制:C/C++语言 2000MS;其他语言 4000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:

你正在玩一个RST(即时战略)游戏。此时你已经有很多队士兵,每一队里的士兵战队力相同。该游戏士兵种类以战斗力区分,既战斗力一样的士兵算作一种。你想重新调整编队,将现有的队列合并成战斗力相同的两队,请想出有多少种编队方法吧。

比如:你现在有两队士兵,第一队有4个士兵,每个士兵战斗力都是1,第二队有2个士兵,每个士兵战斗力都是2.
这时你有三种编队方法,可以将这些士兵合并成战斗力相同的两个队伍:
方法一:队伍1有4个战斗力为1的士兵,队伍2有2个战斗力为2的士兵,两队的战斗力都是4
方法二:队伍1有2个战斗力为2的士兵,队伍2有4个战斗力为1的士兵,两队的战斗力都是4
方法三:队伍1有2个战斗力为1的士兵和1个战斗力为2的士兵,队伍2有2个战斗力为1的士兵和1个战斗力为2的士兵,两队的战斗力都是4

输入

两个int型数组,长度均为n(0<n<10),其中: int[] count:里面的元素代表每一队士兵的士兵数量,大于0小于1000
int[] value:里面的元素代表每一队士兵的士兵战斗力,大于0小于1000 注意:count和value数组的队伍是一一对应的
例如,上面题目描述中的例子里: int[] count = {4, 2} //表示你一共有两队士兵,这两队士兵的士兵数量分别为4和2
int[] value = {1, 2}
//表示你这两队士兵的战斗力分别为1和2(并且是跟count数组一一对应的。也就是说,士兵数量为4的队伍每个士兵的战斗力为1,士兵数量为2的队伍每个士兵的战斗力为2)

输出

对于每个测试实例,要求输出一个long值,表示有多少种均分法(有多少种方法可以将你的所有队伍合并成战斗力相同的两队)。

样例输入

{4, 2} {1, 2}

样例输出

3

4.4 String Shifting

时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:

我们规定对一个字符串的shift操作如下:
shift(“ABCD”, 0) = “ABCD”
shift(“ABCD”, 1) = “BCDA”
shift(“ABCD”, 2) = “CDAB”
换言之, 我们把最左侧的N个字符剪切下来, 按序附加到了右侧。
给定一个长度为n的字符串,我们规定最多可以进行n次向左的循环shift操作。如果
shift(string, x) = string (0 <= x < n), 我们称其为一次匹配(match)。
求在shift过程中出现匹配的次数。

输入
输入仅包括一个给定的字符串,只包含大小写字符。
输出
输出仅包括一行,即所求的匹配次数。

样例输入
byebyebye
样例输出
3

Hint
数据范围
对于40%的数据,字符串长度不超过100;
对于100%的数据,字符串长度不超过10^6。

4.5 找数字

时间限制:C/C++语言 1000MS;其他语言 3000MS
内存限制:C/C++语言 65536KB;其他语言 589824KB
题目描述:

给定整数n和m,将1到n的这n个整数按字典序排列之后,求其中的第m个数字。 对于n = 11,m = 4,按字典序排列依次为1, 10,
11, 2, 3, 4, 5, 6, 7, 8, 9,因此第4个数字为2。

输入

输入仅包含两个整数n和m。

输出

输出仅包括一行,即所求排列中的第m个数字。

样例输入

11 4

样例输出

2

Hint
数据范围
对于20%的数据,1 <= m <= n <= 5;
对于80%的数据,1 <= m <= n <= 10^7;
对于100%的数据,1 <= m <= n <= 10^18。

4.6 今日头条问答题

剑指Offer——完美+今日头条笔试题+知识点总结相关推荐

  1. 剑指Offer——小米+小红书笔试题+知识点总结

    #剑指Offer--小米+小红书笔试题+知识点总结 ##情景回顾 时间:2016.9.23 19:00-21:00 2016.9.24 15:00-17:00 地点:山东省网络环境智能计算技术重点实验 ...

  2. 【剑指Offer学习】【面试题66:矩阵中的路径】

    [剑指Offer学习][面试题66:矩阵中的路径] 题目:请设计一个函数,用来推断在一个矩阵中是否存在一条包括某字符串全部字符的路径.路径能够从矩阵中随意一格開始.每一步能够在矩阵中间向左.右.上.下 ...

  3. asp 判断数组等于_剑指Offer(牛客版)--面试题4:二维数组中的查找

    SCDN博客:https://blog.csdn.net/weixin_41923658 微信公众号:「汤姆鱼」 -------------------------------------手动分割线- ...

  4. 【剑指Offer学习】【面试题40:数组中仅仅出现一次的数字】

    题目:一个整型数组里除了两个数字之外.其它的数字都出现了两次,请敲代码找出这两个仅仅出现一次的数字. 要求时间复杂度是O(n),空间复杂度是O(1). 举例说明 比如输入数组{2, 4, 3, 6, ...

  5. 20180415字节跳动今日头条笔试题——后台研发方向

    [编码题|20分] 找周期 时间限制:C/C++ 5秒,其他语言 10秒 空间限制:C/C++ 65536K,其他语言 131072K . 题目描述 . 对于严格递增的正整数数列A=a1.a2.--. ...

  6. 今日头条笔试题(一)

    车厢排序 一列火车有n个车厢标记为1,2,3,4,5,6-n 现在因为某些原因,需要调整车厢的相对顺序 例如需要将车厢顺序调整为2,3,1,4,5,6-n 由于车厢庞大,且车厢只能停留在铁轨上,所以不 ...

  7. 射气球(今日头条笔试题)? 待解决

    题目要求:二维空间上的一组气球,给出每个气球的起始和终止横坐标(保证其实横坐标小于终止横坐标),不考虑纵坐标.因此气球之间可能存在重叠 一支箭可选定一个横坐标纵向射击. 假设一个气球的横向两端坐标分别 ...

  8. 【剑指Offer学习】【全部面试题汇总】

    剑指Offer学习 剑指Offer这本书已经学习完了.从中也学习到了不少的东西,如今做一个总的文件夹.供自已和大家一起參考.学如逆水行舟.不进则退.仅仅有不断地学习才干跟上时候.跟得上技术的潮流! 全 ...

  9. 剑指Offer——当当+搜狐+好未来笔试题+知识点总结

    剑指Offer--当当+搜狐+好未来笔试题+知识点总结 情景回想 时间:2016.9.21 15:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:当当笔试.搜狐笔试.好未来笔试 3 ...

  10. 剑指Offer——迅雷笔试题+知识点总结

    剑指Offer--迅雷笔试题+知识点总结 情景回顾 时间:2016.9.19 19:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:迅雷笔试 总体来说,迅雷笔试内容体量不算多,主要 ...

最新文章

  1. Centos6.5安装Seafile,遇到的问题处理记录。
  2. chrome web store的信息
  3. Inkscape导出xaml
  4. table表格 html 1128
  5. 【IDEA】IDEA 单元测试 System.in 没办法输入
  6. likely() 和 unlikely()内建宏定义函数
  7. SpringCloud之高可用的分布式配置中心(Spring Cloud Config)(七)
  8. Node组件——Express简介
  9. 「thunar」给thunar增加搜索文件功能
  10. SpringBoot实战(九)之Validator
  11. 什么是低代码(LowCode)/无代码(NoCode)平台?
  12. 测井储层参数预测+人工智能方法
  13. 盗墓笔记—阿里旺旺ActiveX控件imageMan.dll栈溢出漏洞研究
  14. java间接调用_无法解析类型 java.util.Map$Entry。从必需的 .class 文件间接引用了它...
  15. 小程序嵌套h5页面_小程序内嵌H5的方法介绍
  16. Flutter高仿微信-第26篇-新的朋友
  17. AMTD:一种适应性移动目标防御方法
  18. linux键盘触摸板失灵,linux 中屏幕合上后触摸板无法使用
  19. mysql按时间查询的优化_mysql按时间查询优化的方法
  20. SMTP客户端python实现

热门文章

  1. coreldraw错误代码14001_应用程序配置不正确,应用程序未能启动 提示14001错误代码解决方法...
  2. 武当功夫在现代2 视频
  3. 清华大学超级计算机中心,中国科学技术大学超级计算中心
  4. 使用python爬虫批量下载美女图片
  5. 计算机网络数据链路层之MAC协议概述
  6. python 会议室预约系统解决方案_会议室预约管理系统方案书.pdf
  7. 录制GIF动画 MAC
  8. Android iTOP-4412全能版 CAN通信集成(完整篇)
  9. Python中写入文件操作
  10. 创建Vue实例对象基础语法模板