谷歌招聘在如火如荼的进行中,进谷歌都需要经过谷歌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在线测试规则以及注意事项的更多相关文章

  1. [转]程序开发基础学习二(C++ Google Style 命名规则)

    无规矩不成方圆,新的岗位就需要服从团队的编码规则.很开心团队用的是Google的C++编码规则,大概看了下Google 的编码规则,正如九天翔雁说的:“Google的 C++ Style Guide远 ...

  2. google 变量命名规则简要记录

    1.文件命名规则 好的文件名命名可以很清晰的看出这个文件将要承载的内容,Google给出的规则为:文件名要全部小写, 可以包含下划线 (_) 或连字符 (-). 按项目约定来, 例如:cmd_save ...

  3. 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 ...

  4. python 变量的命名规则和注意事项

    命名规则 变量名只能包含字母.数字和下划线.变量名可以字母或下划线打头,但不能以数字打头,例如,可将变量命名为message_1,但不能将其命名为1_message 变量名不能包含空格,但可使用下划线 ...

  5. 2019 google kickstart round A

    第一题: n个人,每个人有一个对应的技能值s,现在要从n个人中选出p个人,使得他们的技能值相同. 显然,如果存在p个人的技能值是相同的,输出0就可以了.如果不存在,就要找出p个人,对他们进行训练,治他 ...

  6. Google kickstart 2022 Round A题解

    Speed Typing 题意概述 给出两个字符串I和P,问能否通过删除P中若干个字符得到I?如果能的话,需要删除字符的个数是多少? 数据规模 \[1≤|I|,|P|≤10^5 \] 双指针 设置两个 ...

  7. google Kickstart Round F 2017 四道题题解

    Problem A. Kicksort 题意抽象一下为: 对于一个每次都从数列正中间取划分数的快速排序,给定一个1-n的排列,问快排的复杂度对于这个排列是否会退化为最坏复杂度. 数据范围: 测试组数1 ...

  8. Google Kickstart Round.B C. Diverse Subarray

    这题又是万恶的线段树 maxx[j]存储的是 l = xxx, r = j的时候的答案 我们会让 l 从 1到n 的遍历中,查询线段树的[l, n]中最大的答案 因为query的下界是n,所以单次查询 ...

  9. Google Kickstart Round E 2018 B. Milk Tea

    太蠢了,,,因为初始化大数据没过,丢了10分,纪念一下这个错误 大概思路:先求出让损失值最小的排列,由已生成的这些排列,通过更改某一个位置的值,生成下一个最优解,迭代最多生成m+1个最优解即可,遍历求 ...

随机推荐

  1. samba服务器架设

    #samba服务器架设方便线上linux服务器和windows服务器之间共享 1.关闭防火墙service iptables stop 2.关闭SELinuxsetenforce 0 3.安装samb ...

  2. MyBatis配置文件的配置说明

    Properties 1.创建一个资源文件jdbc.properties: jdbc.driverClassName=oracle.jdbc.driver.OracleDriver jdbc.url= ...

  3. 批量改ID 行形式

    update [Temp_Sql] set ID(字段) = (274+ID(字段))  字段+字段形式 可以以行形式批量修改

  4. Android与MVC设计模式

    写在前面,之前做过一段时间移动开发,后来因为工作原因搁浅了,最新重新拿起Android权威编程指南学习,顺道做个学习笔记. 首先呢,我想说无论是计算机科班出身还是培训班出身,都听说过高内聚低耦合以及M ...

  5. 【KMP】【字符串】KMP字符串匹配算法 学习笔记

    一.简介     KMP是由Knuth.Morris和Prat发明的字符串匹配算法,它的时间复杂度是均摊\(O(n+m)\).其实用Hash也可以做到线性,只不过Hash存在极其微小的难以避免的冲突. ...

  6. CDN基本原理和功能浅析

    CDN的全称是Content Delivery Network,即内容分发网络.CDN的通俗理解就是网站加速,CPU均衡负载,可以解决跨运营商,跨地区,服务器负载能力过低,带宽过少等带来的网站打开速度 ...

  7. 【mysql】count(*),count(1)与count(column)区别

    https://blog.csdn.net/lzm18064126848/article/details/50491956 count(*)对行的数目进行计算,包含NULL count(column) ...

  8. pingUtil

    package unit; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamR ...

  9. KM算法(运用篇)

    传送门:KM算法---理解篇 最佳匹配 什么是完美匹配 如果一个二分图,X部和Y部的顶点数相等,若存在一个匹配包含X部与Y部的所有顶点,则称为完美匹配. 换句话说:若二分图X部的每一个顶点都与Y中的一 ...

  10. mysql远程连接详细配置

    2018-11-06 CentOS 配置MySQL允许远程登录 Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行如下 ...