博彦科技面试题笔试题

试题一:

博彦科技
姓名:                联系电话:
问题第一部分:(智力)
1 .a, b, c : wear cap(black or white, but not all white), a and b can see, but c is blink;   a,b,c in turn answer whether he can know what color he is wearing, a said no , b said no ,c said is :
Q: why c know, and what color his is?

2: 100个和尚吃100个馒头,大和尚一人吃4个,小和尚4人吃一个,
问:大,小和尚各多少人?

问题第二部分:(选择)
1: 扩展名为DLL的动态链接文件的特点是_________
A.    可以自由的插入到其他的源程序中使用
B.    本身是一个数据文件,可以与其他程序动态的链接使用
C.    本身可以独立运行,也可以供其他程序在运行是调用
D.    本身不能独立运行,但可以供其他程序在运行时调用
2:面向对象技术中,对象是类的实例,对象有三种成分______、属性和方法(或操作)
A.标识        B、规则         C、封装        D、消息
3.程序设计语言引入“类”的概念是为了解决数据保护问题,C++语言将类的成员封装在类体之中,使之具有一定的存取规则,这些规则规定了存取类的成员的权力,其中,对于用private说明的成员,它_______
A. 既能被该类的成员函数访问,又能被外界直接访问
B. 只能被该类的成员函数访问,外界不能直接访问
C.不能被该类的成员函数访问,只能外界直接访问
D.既不能被该类成员函数访问,也不能外界直接访问

4.___________ is a set of specifications and software that allow small programs or software components to work together.
A. ActiveX       B. XML       C. HTML         D.  DAMS

问题第三部分:(问答)
1请简要说明如何测试下面的程序?

template<class T>
void OutputRoots(T  a,  T  b ,  T  c)
{
T d=b * b – 4*a*c;
if(d>0)
{
float sqrtd=sqrt(d);
count <<”there are two real roots”
<<(-b+sqrtd)/(2*a)
<<”and”
<<(-b-sqrtd)/(2*a)
<<endl ;
}
}
Else if (d= =0) {
Cout<<”there is only one distinct root”
<<-b(2*a)
<<endl;
}
else{
cout <<”The roots are complex”
<<endl
<<”The real part is”
<<-b/(2*a)
<<”The imaginary part is”
<<sqrt (-d)/ (2*a)
<<endl;
}
2、以下是一段用C编写的函数,请指出其中存在的问题:
1   int PtintDigit(void)
2   {
3       char*p;
4       int i=0;
5       p=(char*) malloc (256*sizeof (char));
6       for (I=0;I<=256;I++,p++)*p=I;
7       printf(Here is the numbers you need; %d\n”,i)
8       }

问题第四部分(外语考察)
请翻译下面这段文字,中文写在后面:
For Chinese applicants,the first step in applying for a visa is to make an appointment by calling 65325305 or 65322228. The problem is that the two numbers are so busy that often they can’t get through . Mr Bennet explained :“Since all embassies have to use 6532 telephone prefix and the number of lines is limited, the US embassy is only allotted two lines for our appointment system. Insgroupsto solve the problem, we plan to work through a contractor. Contractors don’t have to use the 6532 prefix , so they can be assigned move lines and hire lots of people to answer calls . Applicants will also be able to use faxes and the Internet to make appointments, which will greatly enhance flexibility and convenience, Since the contact has not been awarded yet , I can’t say exactly when the new system will be operative-hopefully sometimes in the fall.”
View Code

 试题 二:

1.以下嵌套循环是hardcode,怎么样实现,输入一个数length,就会让循环嵌套多少层,灵活处理不是hardcode,例如:
输入2就是从0-2,嵌套三层,每个循环都是从0-2,不能直接用2的2次放,3的3次放,4的4次放这样计算运算次数。
int length=100;
for (int i = 0; i <length; i++)
{
  for (int i = 0; i <length; i++)
{
    for (int i = 0; i <length; i++)
{
.... 
              for (int i = 0; i <length; i++) 
{
method1();
}
.....
}
}
}


答案:

例如:method(100,100);//这是调用下面的递归方法,level是层数
void method(intlength,int level)
{
  if(level<0) return;
  for (int i = 0; i < length; i++) 
  {
    method(length,level-1)
  }
}



2.两个数相加除了用加法之外,在程序中是否还有其它实现方法,若有请说明具体算法?






3.有一个整型数组,里面可能存在相同的元素,请写一个算法,判断里面相同的元素是否超过一半,不要求找出元素的值,和相同的个数,只要求返回true or false,例如:
{1,2,3,1,5,1,8,9,1,5,1,1,1}=true
{3,2,1,6,7,9,7,6,1,3}=false
要求时间复杂度是 O(n)
注意时间复杂度,超过O(n),都是无效的答案.
function check()
        {            
varmyarray = new Array();
for(var i =0 ;i<100;i++)
myarray[i] = 0;

var text = $('#Text2').val(); 
varintarray = text.split(",");            
            $(intarray).each(function(){                
myarray[this] += 1;
// ;
            });

var count = 0;
for(var i =0;i<100;i++){
if(myarray[i]>1){                                   
                    count += myarray[i] -1;
                }
            }            
             + '\n'+'结果:'+ (count*2 >= intarray.length).toString());        }

public class CalNum
{
public int[] a;
public int[] arr1 = new int[] { 1, 2, 3, 1, 5, 1, 8, 9, 1, 5, 1, 1, 1 };
public int[] arr2 = new int[] { 3, 2, 1, 6, 7, 9, 7, 6, 1, 3 };
public bool Test(int [] arr1)
{
a = new int[100];
for (int i = 0; i < 100; i++) a[i] = 0;
foreach (int v in arr1) 
a[v] += 1;
int count = 0;
for (int i = 0; i < 100; i++)
if (a[i] > 1) count += a[i] - 1;
return count > arr1.Length;
}
public void fun()
{
Console.WriteLine(Test(arr1));
Console.WriteLine(Test(arr2)); 
}
}
时间复杂度是O(n)
4.用编程语言实现以下各题,
1,求自然数10000以内所有11的倍数的和?
2,1+2+4+8+.......+2^100 = ?
3,有若干只鸡和兔,共30个头,100条腿,求有几只鸡几只兔?

1. 10000 / 11 = 909
这个问题转化为 11 + 11*2 + 11*3 ... + 11*909
采用等差数列求和
S = (11 + 11 * 909) * 909 / 2 = 11 * 910 /2 = 5005 
编程的思路和这个数学解法类似。这题实际上是考等差数列求和
2. 等比数列求和答案为 2^101 - 1 
编程时转成求 2 的 101 次方键1 就可以了。这题主要考等比数列求和以及大数如何表示。
3. 设鸡为x 兔为y
x * 1 + y * 1 = 30 
x * 2 + y * 4 = 100
得 y = 20 , x = 10
编程时求解这个公式就可以了,很简单。
View Code

纠正一题 :

求自然数10000以内所有11的倍数的和?
1. 10000 / 11 = 909
这个问题转化为 11 + 11*2 + 11*3 ... + 11*909
采用等差数列求和
S = (11 + 11 * 909) * 909 / 2 = 11 * 910 /2 = 5005 
编程的思路和这个数学解法类似。这题实际上是考等差数列求和


这个答案是错的:应该是
11 + 11*2 + 11*3 ... + 11*909=11*(1+...+909)=11*(909+1)*909/2=4549545

上面错误原因:1+...+n=n*(n+1)/2
上题少乘了909

代码:
private static void Test1()
        {
            int num = 10000;
            int sum = 0;
            for (int i = 0; i <= num; i++)
            {
                if (i % 11 == 0)
                {
                    Console.WriteLine(i.ToString()+","+(i/11).ToString());
                    sum += i;
                }
            }
            Console.WriteLine(sum.ToString());
        }

 

 

 

试题三:

1. 文件格式系统有哪几种类型?分别说说win95、win98、winMe、w2k、winNT、winXP 分
别支持那些文件系统。
Windows 主要这三种:FAT16, FAT32, NTFS
Win95: FAT16, FAT32, 最初版本的win95 是FAT16,后来才有的支持FAT32 的
Win98: FAT32
WinMe: NT,不确定,但是FAT32 他应该是支持的
Win2K: NT
WinNT: NT
WinXP: NT, FAT32
现在主流是NTFS,但是XP 也是可以安装在FAT32 下的,我以前的电脑就是这样
2. 分别填入一个语句,完成下面的函数,通过递归计算数组a[100]的前n 个数之和。
Int sum ( int a[],int n )
{
if (n>0)
return (sum(a,n-1)+a[n]);
else
return a[n];
} // 这个题也够二的,直接循环就搞定了嘛,我的水平也够二的,想了半天,最后还是百度
了
3. 写出你所知道的3 种常用的排序方法,并用其中一种方法设计出程序为数组a[100]排序。
选择法,冒泡法,快速排序
用最简单的冒泡法吧:
void bubble_sort(int a[], int n)
{
int i = n-1; bool change = true;
for (; i>=1&&change; --i)
{
change = false;
for (int j = 0; j<i; ++j)
{
if (a[j]>a[j+1])
{
int nTemp = a[j+1];
a[j+1] = a[j];
a[j] = nTemp;
change = true;
}
}
}
}
4. 什么是兼容性测试?兼容性测试侧重哪些方面,请按照优先级用矩阵图表列出。
软件兼容性测试是指验证软件之间是否能正确地交互和共享信息。交互可以是同时运
行于同一台计算机上,或在相隔甚远的不同计算机上的两个程序之间进行。
软件设计要求与何种平台(操作系 统、Web浏览器或者操作环境)和应用 软件保持兼
容?如果要测试的软件本身就是一个平 台,那么设计要求哪些应用程序可以在其上运行?
应该遵守何种软件之间的标准和规范?软件 使用何种数据与其他平台和软件交互和共
享信息. 这里有详细的信息,不过我觉得用处不大剩下的 http://www.ltesting.net/html/86/n-164186.html
兼容性是指协调性, 1.硬件上就是说你的电脑的各个部件,CPU,显卡等等组装到一起以后的情况,会不会相互有影响,不能很好的运作. 2.软件上就是说你的电脑的软件之间能否很好的运做,会不会有影响啊?还有软件和硬件之间能否发挥很好的效率工作,会不会影响导致系统的崩溃.
5. 我现在有个程序,发现在WIN98上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?
这个完全baidu不到,我觉得让他在WinXP下运行一下就好啦,前提是同一台机器,配置不变,如果在XP下还是慢,那就是硬件的问题,否则就是软件的问题
6. 翻译,中——英,有关P2P点对点文件传输的原理。
http://baike.baidu.com/view/3280.htm?fr=ala0_1_1
介绍P2P技术的
7.翻译,英——中,有关互联网的发展对商务、学习、交流的影响。
笔试完了是初步的面试
先问了个问题:FAT16/FAT32/NTFS 哪个的安全性最好,为什么?(不会答)
明显ntfs要好一点,因为权限可以绑上 fat16,fat32是没有安全措施的
这里有一些他们的介绍http://zhidao.baidu.com/question/7660453.html
又做了两道题,
一题是关于C++类的继承,看程序写出输出结果,A是虚类,B继承A,跟一般C++ 的书上的习题差不多。
A是虚类,说明有一个或多个虚方法,需方发是要在继承类中覆盖的,纯虚方法必须在继承类中实现,这个题也不好说,连个例题都没有
一题是写出在32位机器下,计算几个变量的size
32位的意思就是一个字节32位长度
百度的,里面没有指针,所有指针的长度都是4字节
char 1 字节 int 4 字节 long 4字节 float 4字节 double 4字节
最后用英文介绍一下自己(倒!根本没有准备,简单说了几句。)
View Code

 

转载于:https://www.cnblogs.com/8090sns/p/3199465.html

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值