原文地址:http://www.iteye.com/topic/1116115
这是一道搜狗的笔试题,要求30分钟。根据encode方法写出对应的decode方法。最后运行程序输出的结果就是要求的答案。先不看答案,trying一下吧。程序如下:
public class Test {
public static void encode(byte[] in, byte[] out, int password) {
int len = in.length;
int seed = password ^ 0x8c357ca5;
for (int i = 0; i < len; ++i) {
byte a = (byte) ((in[i] ^ seed) >>> 5);
byte b = (byte) (((((int) in[i]) << 16) ^ seed) >>> (16 - 3));
a &= 0x7;
b &= 0xf8;
out[i] = (byte) (a | b);
seed = (seed * 3687989 ^ seed ^ in[i]);
}
}
public static void decode(byte[] in, byte[] out, int password) {
int len = in.length;
int seed = password ^ 0x8c357ca5;
for (int i = 0; i < len; ++i) {
// fill the code here
}
}
public static void main(String[] args) throws Exception {
int password = 0xe87dd9d3;
byte[] buf1 = { 29, -16, 96, 43, -85, 25, -96, 83, 13, 66, -109, 49, -111, 0, 60, -101, 99, -86, -38, 86, -35,
48, 23, 83, -102, 25, 73, -116, -101, -88, -5, 14, -14, -112, 87, -87, 2, 108, -58, 40, 56, 12, 108,
77, 83, 38, 20, -114, };
byte[] buf2 = new byte[buf1.length];
decode(buf1, buf2, password);
System.out.println(new String(buf2, "GBK"));
}
}
----------------------------------------------------------
最后输出结果是:搜狗输入法支持各种炫酷的皮肤,彰显个性的你!!!
其中一种实现方式为:
byte a = (byte) (((in[i]&0x7) <<5) ^seed);
byte b = (byte) ((((((int) in[i])&0xf8) << 13) ^ seed) >>> 16);
a &= 0xe0;
b &= 0x1f;
out[i] = (byte) (a | b);
seed = (seed * 3687989 ^ seed ^ out[i]);
分享到:
相关推荐
【搜狗2010招聘笔试题】是搜狗公司在2010年面向应聘者出的一套笔试题目,主要针对测试职位。这些题目旨在考察应聘者的编程基础、逻辑思维和问题解决能力。以下是其中一些关键知识点的详细解释: 1. **调用方式:...
接下来,我将详细解析这份搜狗软件测试开发工程师笔试题中包含的知识点。 首先,软件测试的目的是尽可能多地发现软件中的缺陷,因此第一题的答案是正确的(Y)。Beta测试实际上是一种用户验收测试(UAT),它是软件...
搜狗校园招聘研发类笔试题.pdf 百度前端研发笔试卷.pdf 百度大数据云计算研发笔试卷.pdf 百度安全研发笔试卷.pdf 百度研发工程师深圳.pdf 美团校园招聘研发笔试题.pdf 腾讯校园招聘技术类研发笔试题.pdf 阿里巴巴...
java面试笔试资料java笔试题大集合及答案题库java笔试题汇总资料188个合集 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx ...
搜狗2012年笔试题,绝对真实,主要是针对开发职位,题目比较活,欢迎下载
搜狗的笔试题很可能包含各种算法问题,如排序(快速排序、归并排序、堆排序等)、查找(二分查找、哈希查找等)、图论问题(最短路径、拓扑排序等)以及动态规划。数据结构方面,链表、栈、队列、树(二叉树、平衡树...
2015校园招聘笔试题大合集,汇集百度、腾讯、阿里等多家大型互联网企业的面试题,非常... 搜狗2015校园招聘研发类笔试题.pdf 腾讯2015校园招聘技术类研发笔试题.pdf 浙江大华2015届校园招聘算法、软件类笔试题.pdf
回忆版.pdf百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试八十题.pdf百度校园招聘笔试面试题合集百度校园招聘笔试题web前端2013.pdf百度校园招聘笔试题产品2.pdf百度校园招聘笔试题产品经理2014.pdf百度校园招聘笔试...
搜狗校招产品岗笔试题_互联网 产品经理求职 校招 面试笔试题.docx
以下是一些关于搜狗招聘笔试题目的详细解答,这些知识点对于找工作和准备面试非常有帮助。 Q5: call by value 和 call by reference 的区别? call by value(值传递)是一种参数传递方式,函数调用时,实际参数的...
题库搜狗笔试面试题合集提取方式是百度网盘分享地址
搜狗2013年校园招聘笔试题C,希望对大家有帮助。
搜狗2015校园招聘研发类笔试题.pdf 百度2015前端研发笔试卷.pdf 百度2015大数据云计算研发笔试卷.pdf 百度2015安全研发笔试卷.pdf 美团2015校园招聘研发笔试题.pdf C++基础面试题.docx C++开发工程师面试题库.docx ...
【搜狗2016 C++笔试题】的解析与知识点详解 1. 关于重载和多态的正确理解: - 重载是指在同一个作用域内,可以有多个同名但参数列表不同的函数。这并不局限于子类继承父类的情况,而是可以在任何地方定义具有不同...
java面试笔试题库java软件设计java笔试题大集合及答案文档资料合集300MB“ 100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx 8张...
100家大公司java笔试题汇总.doc 125条常见的java 面试笔试题大汇总.pdf 2011最新整理java经典代码.doc 25个经典的Spring面试问答.docx 8张图解java.docx Addison.Wesley.Java.Concurrency.in.Practice.May.2006.chm ...
搜狗2017年的C++笔试题涉及到重载和多态的概念、博弈论策略、构造函数和析构函数的调用顺序、`fork()`函数的使用以及内存区域的分配。对于C++程序员来说,这些知识点是基础且重要的,理解和掌握它们对于编写高效、...