Google Kickstart在线测试规则以及注意事项
谷歌招聘在如火如荼的进行中,进谷歌都需要经过谷歌kickstart在线测试,然后过了之后还有五轮的面试- -。好吧毕竟你待遇高,你强你有理。。
下面介绍一下进谷歌的第一关google kickstart在线测试规则和注意事项。

google kickstart网址: https://code.google.com/codejam/
(PS. 建议全程连接vpn操作。)
首先你要有一个谷歌账号,可以是Gmail邮箱账号,没有的话注册一个。
然后进入上面的网址,右上角有一个log in,点了之后等一下,就会跳出谷歌登录页面,登录之后完善一下kickstart所需信息点击完成即可。
然后大家可以点击右上角的PAST CONTEST寻找过往的题目自己练练手。
这里先说一下规则:
(完整规则在这里:https://code.google.com/codejam/resources/quickstart-guide#gcj)我这里只是简单概括一下。
谷歌在线测试不同于以往大家做的各种ACM在线评测那样,不是让你不断提交代码然后系统给你测试,而是给你数据集让你自己测试后在本地生成输出文件进行上传。
拿2017年C轮测试第一题举例来说,(网址:https://code.google.com/codejam/contest/4344486/dashboard#s=p0)
点进题目之后会看到有两个按钮,(真正在线测试开始的时候按钮的文字可能会有所不同),

点击后会出现下载信息,这题下载的文件名是A-small-practice.in,点击下载。下载完后可以用记事本打开看看,里面的内容就相当于你控制台的输入了,而我们需要做的就是把这个文件的内容当作输入,然后提交经过程序处理后的输出结果,为.out的文件,系统进行判断你这个.out文件得到的结果是否是正确的,如果正确就显示correct,否则为incorrect。
对于C++来说,也就是文件的输入和输出,代替了你的cin>>和cout<< ,所以忘记了如何进行文件处理的同学可以回去复习一下。
PS. 每一道题都有小数据集和大数据集两个.in文件可供下载,大数据集的数据范围一般都比小数据集的范围更广,有时候代码如果不够精细的话,小数据集没出现的情况在大数据集中会出现从而造成小数据集正确而大数据集结果错误。
下面是我写的A题处理代码(注意A-small-practice.in文件需要和程序文件放在同一个文件夹下):
C++ :
#include<iostream>
#include<fstream>
using namespace std; int main(){ string data;
int line; int store[];
int origin[]; ifstream infile;
infile.open("A-small-practice.in");
ofstream outfile;
outfile.open("A-small-practice.out"); cout << "Reading from the file" << endl; infile >> line; for (int i = ; i < line ; i++){ bool hasA = false;
infile >> data; int length = data.length(); cout<< data <<" "; //本代码中控制台输出只是为了方便对照,与实际输出文件并无联系。
//存储数据
for (int j = ; j<length ; j++){
store[j] = (int)data[j] - ; //强制类型转换,将A-Z转成0-25的数字
} if ( length % == ){ //处理:
//正向:
origin[] = store[];
for (int m = ; m < length ; m = m + ){ if (origin[m-] > store[m-])
origin[m] = store[m-] + - origin[m-];
else
origin[m] = store[m-] - origin[m-];
}
//反向:
origin[length-] = store[length-];
for (int m = length-; m >= ; m = m - ){ if (origin[m+] > store[m+])
origin[m] = store[m+] + - origin[m+];
else
origin[m] = store[m+] - origin[m+];
} cout<<"Case #" << i + << ": " ;
outfile<<"Case #" << i + << ": " ; for (int j = ; j<length ; j++){
int zimu = origin[j] + ;
outfile << (char)zimu ;
cout << (char)zimu ;
} } if ( length % != ){
cout<< "Case #" << i + << ": AMBIGUOUS";
outfile << "Case #" << i + << ": AMBIGUOUS";
} outfile <<endl;
cout<<endl; } return ;
}
看懂了题目之后还是比较简单的一题。运行代码,在程序文件夹下就会产生一个A-small-practice.out文件。再到题目所在的网页里点击submit后选择提交,页面就会显示correct。对于大数据集的操作就是改一下代码中的文件名,最后结果依然也会是correct,自此测试完成。
如果正确,Correct显示在页面最上方,如图所示:

注意事项:
1、实际正式测试的时候除了需要提交结果文件,代码也需要同时提交。
2、多多注意题目中的limit等限制,比方说这个题目明确说了无解的数据集是不会出现的,看清楚了之后能为你省去代码中很多判断步骤。
3、正式测试的时候小数据集有无数次下载机会,如果结果错误,可以不断尝试,只不过每四分钟换一个小数据集文件,里面内容不一样。大数据集只有一次下载机会,你提交了之后你也不知道你的结果对不对,只有等整个测试结束之后才会告诉你。
4、可以先在控制台进行部分关键数据测试,手动输入,控制台输出,看看结果是否有误,确认一些易错数据都正确了之后再进行文件的处理,对于调试来说方便了许多。
祝大家做题顺利~
Google Kickstart在线测试规则以及注意事项的更多相关文章
- [转]程序开发基础学习二(C++ Google Style 命名规则)
无规矩不成方圆,新的岗位就需要服从团队的编码规则.很开心团队用的是Google的C++编码规则,大概看了下Google 的编码规则,正如九天翔雁说的:“Google的 C++ Style Guide远 ...
- google 变量命名规则简要记录
1.文件命名规则 好的文件名命名可以很清晰的看出这个文件将要承载的内容,Google给出的规则为:文件名要全部小写, 可以包含下划线 (_) 或连字符 (-). 按项目约定来, 例如:cmd_save ...
- google Kickstart Round G 2017 三道题题解
A题:给定A,N,P,计算A的N!次幂对P取模的结果. 数据范围: T次测试,1 ≤ T ≤ 100 1<=A,N,P<=105 快速幂一下就好了.O(nlogn). AC代码: #inc ...
- python 变量的命名规则和注意事项
命名规则 变量名只能包含字母.数字和下划线.变量名可以字母或下划线打头,但不能以数字打头,例如,可将变量命名为message_1,但不能将其命名为1_message 变量名不能包含空格,但可使用下划线 ...
- 2019 google kickstart round A
第一题: n个人,每个人有一个对应的技能值s,现在要从n个人中选出p个人,使得他们的技能值相同. 显然,如果存在p个人的技能值是相同的,输出0就可以了.如果不存在,就要找出p个人,对他们进行训练,治他 ...
- Google kickstart 2022 Round A题解
Speed Typing 题意概述 给出两个字符串I和P,问能否通过删除P中若干个字符得到I?如果能的话,需要删除字符的个数是多少? 数据规模 \[1≤|I|,|P|≤10^5 \] 双指针 设置两个 ...
- google Kickstart Round F 2017 四道题题解
Problem A. Kicksort 题意抽象一下为: 对于一个每次都从数列正中间取划分数的快速排序,给定一个1-n的排列,问快排的复杂度对于这个排列是否会退化为最坏复杂度. 数据范围: 测试组数1 ...
- Google Kickstart Round.B C. Diverse Subarray
这题又是万恶的线段树 maxx[j]存储的是 l = xxx, r = j的时候的答案 我们会让 l 从 1到n 的遍历中,查询线段树的[l, n]中最大的答案 因为query的下界是n,所以单次查询 ...
- Google Kickstart Round E 2018 B. Milk Tea
太蠢了,,,因为初始化大数据没过,丢了10分,纪念一下这个错误 大概思路:先求出让损失值最小的排列,由已生成的这些排列,通过更改某一个位置的值,生成下一个最优解,迭代最多生成m+1个最优解即可,遍历求 ...
随机推荐
- input 和 select
var source = $('input[name="source"]:checked').val(); var completenum = $("#completen ...
- 20165224 陆艺杰 Exp5 MSF基础应用
用自己的话解释什么是exploit,payload,encode Exploit是攻击的行为 Payload是一段植入目标机的简短的带功能的恶意代码 Encode是编码,用于更改恶意代码,编码特征码检 ...
- Tomcat 连接数与线程池详解
前言 在使用tomcat时,经常会遇到连接数.线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector). 在前面的文章 详解Tomcat配置文件server.xm ...
- windows xp 环境下 Oracle8i 双击安装文件无反应的解决办法
今天调试一份比较老的程序,数据库用的是Oracle8i,在本地xp系统上搞了半天,双击安装文件就是没反应! 在网上整理了一下解决办法: 1.将ORACLE软件拷贝到硬盘. (比如我拷贝到:F:\Ora ...
- JavaWeb学习笔记(十三)—— JDBC时间类型的处理
一.Java中的时间类型 Java中用类java.util.Date对日期/时间做了封装,此类提供了对年.月.日.时.分.秒.毫秒以及时区的控制方法,同时也提供一些工具方法,比如日期/时间的比较,前后 ...
- flask_restful
from flask_restful import (Resource, reqparse) # 参数解析对象生成 parser = reqparse.RequestParser() parser.a ...
- json、xml
json:(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.简单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然 ...
- python学习,day2:列表的复制
主要涉及列表的潜复制(第二层受后面修改的影响)和深复制(不受后面修改的影响) 代码如下 # coding=utf-8 # Author: RyAn Bi import copy names = ['A ...
- HDU - 1520 树形DP入门题
写了两种DP,第一种是按照自己习惯来xjb敲的,第二种参考别人 熟悉一下树形DP的套路 dp[i][]是维护i及以下的关系最优值的,所以我觉得两次DP记忆搜索之间不清-1应该是正确的(也就做了一次加法 ...
- [转] javascript 判断对象是否存在的10种方法总结
[From] http://www.jb51.net/article/44726.htm Javascript语言的设计不够严谨,很多地方一不小心就会出错.举例来说,请考虑以下情况.现在,我们要判断一 ...