机考信息指北

校招机考基本信息

1、上机考试安排

8月底至10月初,每周三进行(具体以短信通知为准)。

2、考题信息

在线机试,限时120分钟,支持C、C++、Java、Python等编程语言。
三道题(简单、中等、困难 各一道,分别是100分、200分、300分),满分600分,软件研发一般150分及格
可以使用本地IDE,但切屏仅限切换为本地IDE,否则可能被认为是作弊。建议使用本地IDE,可以更方便调试。

3、练习到什么程度大概率能过

平时练习的话,120分钟内,能做出2个LeetCode中等题目差不多了(牛客网也行,但更多的人在LeetCode)。要做懂每道题,要准备好每个题型解题思路,触类旁通。

真到了考试,有点技巧:其实主要是刷分,策略是看一遍题目哪题有思路写哪题(第三题分值高,但万一是自己最拿手的呢),没思路的题也能骗分就骗分:对于题目要求没有正确解就输出-1的情况,或者简单的yes or no的情况,直接返回-1/yes/no,能拿一点分。

与平时刷LeetCode不同的是,机考是ACM模式(需要我们自行处理输入输出,写main函数),而不是核心代码模式,新手要着重练习一下输入获取,输出返回值。

这里贴出一个ACM模式输入输出处理的帖子,平时自己练习就在IDE里模拟终端输入就行。或者去OJ平台练习输入输出也行,牛客网的练习场

4、知识点(来源机考真题):

动态规划 *3
背包
递归
滑动窗口
广度/深度优先搜索
前缀和
迭代
分治算法
贪心算法
哈希表
字符串处理
二进制/k进制转换
位运算
数据结构:链表、队列(善用库函数的优先队列高效做题)、数组、图论(hard,战略性放弃)

新手备考方法:

1、先刷5道LeetCode简单题,看看是怎么个事。
2、用LeetCode刷题,有一个LeetCode上的HW公开题库(要花钱看,但是可以找资源,根据题目去LeetCode找原题刷,大概刷个100+道,机考时间不多了可以先不刷hard的)
3、专题刷:按照上面的真题知识点(或者LeetCode的专题),每个知识点都找两三道题,把知识点理解了,争取触类旁通,刷到重复的也没关系
4、刷刷真题,练练手。或者用其他家的笔试练练手。
另外:要熟悉ACM模式(很重要,输入输出处理不好会耽误大量时间,1、2、3按照顺序刷,但此步可以穿插在1、2、3中间),用ACM模式刷最少15道题。
总共刷题数量在150道左右。一般需要30天。时间充裕就多刷。

5、真题

第一套

1、子数组数量

给定一个整型数组,选取其中包含n个不同数字的连续元素作为一个新的子数组,求符合条件的子数组数中各元素和的最大值。

解答要求

时间限制: 100ms, 内存限制: 32MB

输入

第一行是给定的整型数组元素个数n,范围是 [1, 100];
接下来一行有n个正整数表示初始的数组,用空格分开,范围是[1, 10^5];
第三行是符合条件子数组中需包含不同数字的个数m,范围是 [1, n];

输出

符合条件的子数组数中各元素和的最大值。
如果无符合条件的子数组,返回-1。

样例1
输入:7
      1 1 2 3 4 5 6
      4
输出:18
解释:子数组中可包含重复数字,共有4个不同的数字。
符合条件的子数组为[1, 1, 2, 3, 4]、[1, 2, 3, 4]、[2, 3, 4, 5]、[3, 4, 5, 6],其中[3, 4, 5, 6]中个元素和最大为18。
样例2
输入:4
      1 1 2 2
      3
输出:-1
解释:给定数组中无包含3个不同数字的子数组,返回-1。

2、会议通知转发总人数

在一个办公区内,有一些正在办公的员工,当员工A收到会议通知,他会将这个会议通知转发给周围四邻(上下左右工位的同事)团队内的同事,周围收到该邮件的同事会继续转发给周围四邻(上下左右工位的同事)团队内的同事,直到周围没有再需要往下传播的同事则会停止;同时此扩散还有前提条件,给定一可收到该邮件的团队列表relations,扩散时若该同事所在团队在relations列表中,则可进行扩散,否则不可进行扩散。办公室用一个二维数组office表示,其中office[i][j]表示该同事的团队名称,其中团队名称用整数t范围内的数字表示,i,j表示该同事的工位位置,现给定办公区的工位总行数与每一行的具体工位人员分布以及收到会议通知员工A的工位位置的坐标位置i,j;还有与该邮件关联的团队编号列表relations,请分析得出最终会有多少同事收到该会议的转发通知。
注意:
1、该办公区位置用二维数组表示,该二维数组以左上角的工位为起点(0,0),按照横轴向右纵轴向下的方向展开;原始收到会议通知的员工A不包含在总人数中。
2、扩散时若该同事与收到初始收到邮件的员工A属于同一团队,若该团队名不在可收到通知的团队列表relations中,依然不可收到该邮件转发

解答要求

时间限制: 1000ms, 内存限制: 256MB

输入

第一行是一个整数n,表示该办公区共有多少排,即就是office.length
第二行是一个整数m,标识该办公区共有多少列,即就是offce[i].length
接下来n行表示每一排员工的具体分布情况,每个工位上的员工所在的团队号x用空格隔开
接下来一行是两个数字用空格隔开,表示收到会议通知员工的工位位置,i表示横坐标位置,j表示纵坐标位置
最后一行是一个字符串,表示可收到该邮件的团队列表relations,团队名称之间用空格隔开
提示:
0<=i<=1000
0<=j<=1000
1<=t<=50
1<=relations.length<=50

输出

输出收到转发会议通知的总人数

样例1
输入:5
      5
      1 3 5 2 3
      2 2 1 3 5
      2 2 1 3 3
      4 4 1 1 1
      1 1 5 1 2
      2 2
      1
      
输出: 5

解释

样例2
输入:2
      2
      1 1
      2 2
      0 0
      2

输出:2

解释2

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Always Believe ...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值