51Testing软件测试论坛

标题: 微创的入职测试题 [打印本页]

作者: 馨香碧玉    时间: 2006-9-1 20:21
标题: 微创的入职测试题
Test   Paper  (考试时间:60分钟)
Date:___________________                         Time:___________________

1.        两个1000位的大数,如
1234512345……… (共200个12345)

5432154321……… (共200个54321)
请把它们相乘。
注意,两个大数为任意数字,并无规律。













2.        写一个函数,输入一个字符串和一个数组作为参数,该函数会把字符串按照数组中列出的字符拆分。如,输入 “a=10; b=2  x; c=30;” 和’’(空格)’=’(等于号)’;’(分号),函数将字符串拆分a  10  b  2  x  c  30
如使用C++,C#,Java, 请尽量避免使用框架类库。
作者: 馨香碧玉    时间: 2006-9-1 20:23
这是我前不久收到的上海微创的入职测试题,就是软件测试这一职位的,希望能给大家一些帮助!sdlkfj2
作者: walker_lai    时间: 2006-9-4 19:44
什么意思的题目啊?
作者: angelsteel    时间: 2006-9-11 17:42
都是要编写程序吗???  考的是软件测试???  不理解。。。。。。
作者: millionaire    时间: 2006-9-12 14:15
看了看,不知道怎么做
作者: ylj_983    时间: 2006-9-12 14:50
茫然
作者: jennie98    时间: 2006-9-12 16:10
好难 。。。
作者: 百事可乐    时间: 2006-9-12 17:12
这是他们招程序员的题吧,是不是寄错人了
就算是高级软件测试工程师,也不一定会做这题吧
作者: dandan1111    时间: 2006-9-12 17:17
不清楚怎么做,我觉得有些公司确实是那种招测试人员,还不是白盒测试反而考一些开发的题,真弄不明白这样的测试经理他到底懂不懂测试方面的技术.我还知道有的公司的测试组是怎么样成立的,就是自己公司的开发人员,开发技术不怎么好所以在公司做了测试,对于这样的人我觉得测试他也是做不出什么成绩的,关键原因还是不懂测试又如何去测试产品.
作者: cr19800604    时间: 2006-9-12 17:37
确实有点夸张了点!
作者: yzw19860623    时间: 2006-9-18 20:59
标题: 第一题,我的见解
第一题的答案是不是200个58985
只要算出12345*54321
作者: 0o萤火虫o0    时间: 2006-9-18 22:24
是不是白盒啊,我们都是菜鸟啊
作者: huiyun    时间: 2006-9-20 16:35
我刚进公司面试的时候也是一样,给我份开发的卷子。我交了白卷,但最后还是通过了。
进公司做了三套题:
1)开发;
2)测试;
3)逻辑;

很多公司所谓的招测试人员,其实是要求测试的也可以做开发,一举两得嘛。
在这样的公司面试时一定要搞清楚公司是做什么业务的以及你以后要做的工作。

实在不行也不能勉强。
作者: 馨香碧玉    时间: 2006-9-20 18:35
原帖由 yzw19860623 于 2006-9-18 20:59 发表
第一题的答案是不是200个58985
只要算出12345*54321

我也不知道答案啊
感觉很难
不过不知道您注意到没有,这些数字是没有规则的
作者: archonwang    时间: 2006-9-20 22:52
最近在网络上看到的关于大数分析方法的内容,可以用于参考解答第一个问题,似乎是密码学基础内容。
Shor算法和Grover算法。
关于Shor算法的研究文献。
http://202.202.36.174/pdf/ziran/200406/040629.pdf

[ 本帖最后由 archonwang 于 2006-9-20 22:54 编辑 ]
作者: 爱好电脑的人    时间: 2006-9-21 10:26
晕~~~~~~~~~~~~~~~~~~~~```
作者: donkey    时间: 2006-9-21 13:54
原帖由 archonwang 于 2006-9-20 22:52 发表
最近在网络上看到的关于大数分析方法的内容,可以用于参考解答第一个问题,似乎是密码学基础内容。
Shor算法和Grover算法。
关于Shor算法的研究文献。
http://202.202.36.174/pdf/ziran/200406/040629.pdf


怎么有些图片显示不了??
作者: ITMM    时间: 2006-9-21 14:44
虽然很难,但还是谢谢
作者: 菜鸟abc    时间: 2006-9-24 17:45
虽然很难,感觉很好玩,好久没有用自己的脑子了。从毕业前两个月,到现在已工作两个月,也有4个月了,在不用就麻烦了、、、、、、哈哈
作者: boliping    时间: 2006-9-25 17:23
原帖由 yzw19860623 于 2006-9-18 20:59 发表
第一题的答案是不是200个58985
只要算出12345*54321

不是这么简单吧,从后往前还有进位呢。这是要编程实现吧
作者: terrylight    时间: 2006-10-4 22:45
需要编程序实现,第二题倒是还可以
作者: wangfeng25    时间: 2006-10-8 11:48
实在是不会,
作者: yuyang316    时间: 2006-10-10 16:34
看到这题我就已经崩溃了。
作者: hjjlearning    时间: 2006-10-12 18:38
郁闷,要晕了~~~~~~
作者: lyf-1026    时间: 2007-2-2 11:43
我今年1月份面试的时候就不是这套题拉,全是与测试相关的,只有几个程序题还是选择,还有就是质量体系方面的
作者: sunxy5291    时间: 2007-2-2 14:40
我去微创面试过.net开发,他妈的太难了
不知道人家公司啥意思?
测试我估计也要整人
建议别去了
作者: Oh!My    时间: 2007-2-5 08:35
51对学员居然有回帖要求,那么我就来解答这两道程序题好了.现编,先占个楼顺便多回一贴~~sdlkfj3
作者: virgozz    时间: 2007-2-5 09:44
第一题应该不是考察从算法中优化这个程序,作为测试员 你只要注意什么类型的数据结构可以存放如此海量的数字而已。
第2题我想大家都可以做出来的吧~。
作者: Oh!My    时间: 2007-2-5 09:44
标题: 第一题
用数组计算大数,用程序模仿小学学的乘法规则即可.
代码如下(c#)
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] anw = new int[2000];  //1000位乘1000位最多得数2000位
            for (int i = 0; i < 2000; i++)
                 anw [ i ] = 0;    //初始化answer数组
            int lenth = 1999;  
            for (int i = 999; i >= 0; i--)
            {
                    int l = lenth;
                    int carry = 0;
                    for (int j = 999; j >= 0; j--)
                    {
                        int preanw = anw[l];
                        anw[l] = (((num2 [ i ]  * num1[j]) % 10) + carry + anw[l]) % 10; //num1和num2数组即为给定的两个1000位大数

                        carry = (num2 [ i ] * num1[j] + carry + preanw) / 10;
                        l--;
                    }
                    anw[l] = carry;
                    lenth--;
            }
            for ( int i = 0; i < 2000; i++)
                Console.Write(anw [ i ] );
        }
    }
}

[ 本帖最后由 Oh!My 于 2007-2-5 10:45 编辑 ]
作者: Oh!My    时间: 2007-2-5 09:52
标题: 第一题扩展检验版,自己跑着玩
其实1000位只是一个摆设罢了,目的是告诉你不能用常规的乘法做用上面的算法可以实现任意两个数的相乘.下面贴可以直接编译运行的代码.直接输入任意两个数进行计算.
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string input1 = Console.ReadLine();
            string input2 = Console.ReadLine();
            int[] num1 = new int[input1.Length];
            int[] num2 = new int[input2.Length];
            int[] anw = new int[num1.Length + num2.Length];
            for (int i = 0; i < input1.Length; i++) //输入两个数,转换时要把asc码转换成数字,减48
                num1 [ i ]  = (byte)input1 [ i ]  - 48;
            for (int i = 0; i < input2.Length; i++)
                num2 [ i ]  = (byte)input2 [ i ]  - 48;
            for (int i = 0; i < anw.Length; i++)
                anw [ i ]  = 0;

            int lenth = anw.Length - 1;
            for (int i = (num2.Length - 1); i >= 0; i--)
            {
                    int l = lenth;
                    int carry = 0;
                    for (int j = (num1.Length - 1); j >= 0; j--)
                    {
                        int preanw = anw[l];
                        anw[l] = (((num2 [ i ]  * num1[j]) % 10) + carry + anw[l]) % 10;
                        carry = (num2 [ i ]  * num1[j] + carry + preanw) / 10;
                        l--;
                    }
                    anw[l] = carry;
                    lenth--;
            }
            for ( int i = 0; i < anw.Length; i++)
                Console.Write(anw [ i ] );
            Console.ReadKey();
        }
    }
}

[ 本帖最后由 Oh!My 于 2007-2-5 09:55 编辑 ]
作者: Oh!My    时间: 2007-2-5 10:00
标题: 第二题 偷懒输出办
比较第一题第二题更加容易了,10分钟搞定.题目没有说输出不可以,先贴最简单的直接打印到屏幕的版本,可在.net下直接编译运行
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication2
{
    class Program
    {
        static void sepstring(string input, string inputsig)
        {
            int flag = 0;
            for (int i = 0; i < input.Length; i++)
            {
                for (int j = 0; j < inputsig.Length; j++)
                    if (input [ i ]  != inputsig[j])
                        flag = 1;
                    else
                    {
                        flag = 0;
                        break;
                    }
                if (flag == 1)
                    Console.Write(input [ i ] );
                else
                    Console.Write(" "); //打印空格隔开,也可以换作其他字符
                                    
            }
        }
        static void Main(string[] args)
        {
            string inputline = Console.ReadLine();
            string inputsig = Console.ReadLine();
            sepstring(inputline, inputsig);
            Console.ReadKey();

        }
    }
}
作者: Oh!My    时间: 2007-2-5 10:10
标题: 第二题数组分割法
当然了打印毕竟不是很正规,那么就写个分装函数输入字符串,输出分割后的字符串数组(动态的).这下正规了吧.注意这里用到了arraylist动态数组.和静态数组的用法有些区别.
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections; //使用arraylist需要声明的空间

namespace ConsoleApplication2
{
    class Program
    {
        static ArrayList  sepstring(string input, string inputsig)
        {
            int flag = 0;
            string temp = string.Empty;
            ArrayList array = new ArrayList();
            for (int i = 0; i < input.Length; i++)
            {
                for (int j = 0; j < inputsig.Length; j++)
                    if (input [ i ]  != inputsig[j])
                        flag = 1;
                    else
                    {
                        flag = 0;
                        break;
                    }
                if (flag == 1)
                    temp = temp + input [ i ] ;
                else
                {
                    if (temp != string.Empty)
                    {
                        array.Add(temp);
                        temp = string.Empty;
                    }
                }

            }
            if (temp != string.Empty)
                array.Add(temp);
            return array;
        }
        static void Main(string[] args)
        {
            string inputline = Console.ReadLine();
            string inputsig = Console.ReadLine();
            sepstring(inputline, inputsig);
            Console.ReadKey();

        }
    }
}
作者: Oh!My    时间: 2007-2-5 10:29
标题: 第二题运行效率优化版
第二题还有优化的空间.因为双循环在实际工作中是要尽量避免的.试想如果输入的分割符号非常多,那么每个字符都要遍历一编代价可能比较高.实际工作中,应该优化.使用哈希表数据结构进行优化,把双循环变为单循环.代码如下(可直接编译运行)
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections; //hashtable需要使用到的空间
namespace ConsoleApplication2
{
    class Program
    {
        static void sepstring(string input, string inputsig)
        {
            Hashtable symbol = new Hashtable();
            for (int i = 0; i < inputsig.Length; i++)
                symbol.Add(inputsig [ i ] , i);
            for (int i = 0; i < input.Length; i++)
            {
                if(!symbol.ContainsKey(input [ i ] ))
                    Console.Write(input [ i ] );
                else
                    Console.Write(" "); //偷懒直接打印,也可用上一个解法的arraylist
            }
        }
        static void Main(string[] args)
        {
            string inputline = Console.ReadLine();
            string inputsig = Console.ReadLine();
            sepstring(inputline, inputsig);
            Console.ReadKey();

        }
    }
}
作者: Oh!My    时间: 2007-2-5 10:37
标题: 总结和说明
有些人看了代码可能会说不是题目要求请尽量避免使用框架类库吗?注意我这里使用的类库如string.empty,string.length其实都是非常简单的,可以用for循环和null值(或者"")来代替.至于动态数组和哈希表,也是可以另外写一个类来自定义的.不过这些都是c#里面最基本的指令.就好像c++的cout一样平常.单位考察的重点代码包括了,这些小地方可以提高效率何乐而不为呢?
另外我以前也用c++多.工作了两个月了,用了一个月的c#.微创是微软的子公司吧?(工作语言是c#)反正以前旁边坐过一个微创的哥们.测试的,每天用c#写自动化代码.挺强的~
作者: yyanfang    时间: 2007-2-5 16:41
看不太懂,是C++,还是C#写的?晕了~~~~~~
作者: sunxy5291    时间: 2007-2-5 17:34
应该是C#,不知道这位老兄为什么在这写开代码了?
难道你没有开发环境?嘎嘎...
作者: Oh!My    时间: 2007-2-5 17:36
我不是说的很清楚么,我来解答题目,顺便完成51对学员50帖回复的目标~~sdlkfj1
作者: phoenixDT    时间: 2007-2-5 18:37
楼上的还有这个目标啊

嘿嘿
作者: Oh!My    时间: 2007-2-5 18:50
回35楼的,我说过用c#了呀,就是可以直接在vs2003以上版本编译通过的。其实仔细看看除了声明数组,函数不一样以外,其他也差不多。
回楼上的,是的呀。每个人至少要在版上回50帖。否则id特权不保。灌水太没劲了,我就解答题目了呀。还剩4帖,加油!!
作者: wangkui12345    时间: 2007-2-6 10:29
好难哦,看不懂~
作者: wangs    时间: 2007-2-6 10:30
其实回答问题也是种快乐,可以多多的交流嘛,把任务不要看的太重..
作者: JuliaLiu    时间: 2007-2-6 12:09
第一题是不是应该是考虑写测试用例啊,不是编程吧。sdlkfj5




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2