第一次社招笔试题回顾
在上个月裸辞之后,休息了近一个月,最近开始找工作,发现很多基础自己忘了挺多的。从校招过后,到现在,将近1年多没有怎么做过算法题,Eclipse,Idea这几个都用的比较少。
一家2016年创立的手游公司在智联看到我的简历,然后发邀请,让我过去笔试面试,我在电话沟通中也说明了我自己游戏开发的相关经验,HR说没有问题,主要还是看基础和潜力。不过,最近也是在找工作中,我一口答应了,过去试一试。
第二天,过去这家公司,创业公司,人不是很多,公司地点在某一层楼中的某个区域。公司氛围很安静,大家都在静静的工作中,说话交流也比较小声。和我上家公司比真的好太多。
一来到,HR就选个座位让我坐下,然后把笔试题拿给我,说明了一下规则,就开始了。笔试的题目如下:
1、考学习能力的题
题目大概是以下内容:
我在搜索引擎找到题目出处 在此
当时该题是要填写伪代码:
在下文的RFC文档中的Chunked解码过程里,下划线部分为需要填写的内容。【答案在题目之后,要自己做一下的,页面别滚动太快哦】
为了防止连接失效,我将内容引用到此:
有时候,Web服务器生成HTTP Response是无法在Header就确定消息大小的,这时一般来说服务器将不会提供Content-Length的头信息,而采用Chunked编码动态的提供body内容的长度。
进行Chunked编码传输的HTTP Response会在消息头部设置:Transfer-Encoding: chunked
表示Content Body将用Chunked编码传输内容。
Chunked编码使用若干个Chunk串连而成,由一个标明长度为0的chunk标示结束。每个Chunk分为头部和正文两部分,头部内容指定下一段正文的字符总数(十六进制的数字)和数量单位(一般不写),正文部分就是指定长度的实际内容,两部分之间用回车换行(CRLF)隔开。在最后一个长度为0的Chunk中的内容是称为footer的内容,是一些附加的Header信息(通常可以直接忽略)。具体的Chunk编码格式如下:
Chunked-Body = *chunk
“0” CRLF
footer
CRLF
chunk = chunk-size [ chunk-ext ] CRLF
chunk-data CRLFhex-no-zero =
2、Linux中 * $
符号匹配问题填空
这道题是比较普通的一道题,也是5个填空,这个是C语言的,主要考察指针吧,我觉得,暂时没有找到题目,略过吧。
3、编程题
题目:
输入一个句子,每个单词与单词直接都是用空格隔开,再输入一个数字N,现在要将这个句子拆分,这个数字N决定的是拆分后每一行的长度。给了下面两个测试用例
输入:
a key b fox hello
n = 7
输出:
a key b
fox
hello
输入:
a key b fox hello
n = 3
输出:
a
key
b
fox
hel
lo
下面代码是我后来自己写的一个,不一定正确,但是测试用例过了的,还有我自己想的另几种情况也是测过的,所以我觉得没有问题。
import java.util.Scanner;
public class Test3Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("Please input the parse:");
Scanner scanner = new Scanner(System.in);
String string = scanner.nextLine();
System.out.println("please enter the N:");
int n = scanner.nextInt();
//judge to print
for(int i = 0; i < string.length();) {
if (i + n >= string.length()) {
System.out.println(string.substring(i,string.length()).trim());
break;
}
//a line original
String result = string.substring(i,i+n);
//the last char is blank
if (result.charAt(n-1) == ' ') {
System.out.println(result.trim());
i = i + n;
continue;
}
else {
// the next line begin with blank
if(string.charAt(i+n) == ' ') {
System.out.println(result.trim());
i = i + n;
continue;
}
else {
// the "result" contain blank.
// we suppose that all the words distance is one blank. So the result is not all blank
if(result.lastIndexOf(" ") != -1) {
int index = result.lastIndexOf(" ");
if(!result.substring(0, index).trim().equals("")){
System.out.println(result.substring(0, index).trim());
}
if (index == 0) i = i+1;
i = i + index;
}
else {
System.out.println(result.trim());
i = i + n;
}
}
}
}
}
}
这道题不难,以前做ACM水题的时候经常做的,最后居然做不出来。当时脑袋有点乱了,哎,能力不足呀。抓紧时间补一补基础才行。
4、逻辑智力题
这是最后一道题,算是很开放的一道题吧。不算难,当时我还设了很多变量,列了一些公式去做。
题目:
体积和浓度相同的两杯水,一杯糖水,一杯盐水
①在糖水中勺一勺水放入盐水中,
②在之后的盐水中勺一勺放入糖水中,
请问是糖水中的盐比例高还是盐水中的糖比例高。
我的计算结果是两者一样多。有兴趣的可以自己算一下。
最后当然是没有过啦,笔试成绩有点惨不忍睹[手动捂脸]。
总结
这四道题,除了第一道,其他真的不难,我在第三道题卡了很长时间,最后一道题计算太久。还是基础不扎实呀,忘记太多了。阅读代码和写代码真的是很不一样的。动手能力很重要的。
第一道,学习能力问题吗?我觉得考的更多的应该是理解能力,我没有接触过的知识,一开始要理解起来还是有点困难的。阅读能力也是一项弱项,都要提高呀。
之后继续加油吧!!!相信自己!!