2015 算法工程师实习生机试

1.用十进制计算30!(30的阶乘),将结果转换成3进制进行表示的话,该进制下的结果末尾会有____个0。【解析】计算N!下3进制结果末尾有多少个0,其实就是计算3进制中的3被进位多少次,只要将N!因式分解成3^m*other,m就是答案。技巧性的解法就是m=N/3+N/(3^2)+N/(3^3)….+N(3^k) (k<=N/3) —— N=30;N/3+N/9+N/27=14。

2.小赵和小钱二人分别从寝室和图书馆同时出发,相向而行。过了一段时间后二人在中途相遇,小赵继续向图书馆前进,此时:若小钱继续向寝室前进,则当小赵到达图书馆时,小钱离寝室还有600米;若小钱立即折返向图书馆前进,则当小赵到达图书馆是,小钱离图书馆还有150米。那么图书馆与寝室间的距离是____。【解析】

方法一:

设小赵,小钱速度分别位v1,v2,相遇前后时间为t1,t2。则可以得到:v1(t1+t2)=s;v2(t1+t2)=s-600;v1/v2=s/(s-600)(v1-v2)(t 1+ t 2) = 600;(v 1 -v 2)t2 = 150;v 2 t 1 = v 1 t 2;v1/v2 = 1/3s/(s-600) = 1/3;s=900。

方法二:

x=y=75;s=600+75*2+150=900。

3.某开发团队有6位开发同学,需参加5个项,每位同学需要恰好参加1个项,那么总共有____ 种不同的分配案【解析】

六人五个项目,必有一项目两人做C(1/5)*C(2/6),剩下四人座剩下四个项目A(4/4),则N=C(1/5)C(2/6)A(4/4)。

4.如下SQL语句中,____可能返回null值。(1) select count(*) from t1;(2) select max(col1) from t1;(3) select concat(‘max=’,max(col1)) from t1;【解析】(1)返回的是表的行数,如果没有记录,应该返回0,不会出现NULL,(2) 和(3) 正常情况下不会出现NULL,但是如果表里面没有记录,则会出现NULL。5.略

6.以下关于STL的描述中,____是错的。STL容器是线程不安全的当容量不够时,vector内部内存扩展方式是翻倍std::sort是稳定排序std::bitset不是一个STL容器std::stack默认是用deque实现的std::string中可以存储多个’\0’字符【解析】A:“很多程序员希望STL实现是完全线程安全的“。所以不安全。B:vector的存在可以使开发者不必关心内存的申请和释放。但是,vector的一个缺点就是它的内存分配是按照2的倍数分配内存的。C:错误。要知道 std::sort 不是稳定的排序算法,它不保证“相等”元素的相对位置,使用 std::stable_sort 来保证这一点D:STL的容器可以分为以下几个大类:一:序列容器, 有vector, list, deque, string.二 : 关联容器, 有set, multiset, map, mulmap, hash_set, hash_map, hash_multiset, hash_multimap三: 其他的杂项: stack, queue, valarray, bitsetE:正确。堆栈是一个线性表,插入删除操作都在一端进行,deque是先进先出的,操作原理和stack是一样的7.有8只球队,采?用抽签的?方式随机配对,组成4场?比赛。假设其中有4只强队,那么出现强强对话 (任意两只强队相遇)的概率是____。【解析】全部可能性是C8 2C6 2C4 2/A4 4 = 105 种。强弱搭配,因为恰好都是4个,共有A4 4 = 24 种。答案就是 1-(24/105) = 27/358.两个市区C1和C2,其人口比率是1:3,从今年的患病统计来说,C1市区由于污染严重,患癌的概率是0.1%,而C2市的患癌概率是0.02%,现在医院接收到一位患癌病人,他是C1市区来的概率是____。【解析】这里运用了概率论中的贝叶斯公式,只是换了一种方式,通过已知结果找寻原因。假设C1市区有100人,C2市区有300人,假设患病事件记为Y。现在医院接收到一位患癌病人,他是C1市区来的概率P(C1|Y)=(100*0.1%)/(100*0.1%+300*0.02%)=0.6259.下面代码在64位Linux系统编译执行,输出结果是____。#include <stdint.h>#include <stdio.h>void print_size(int32_t array[10]){printf("%d\n", sizeof(array));}int main () {int32_t myArray[10];printf("%d ", sizeof(myArray));print_size(myArray);}

【解析】64位Linux系统指针占8个字节;int32_t 仍然占用32位,4个字节;输出: 40 810.假设某棵二叉查找树的所有键均为1到10的整数,现在我们要查找5。下面____不可能是键的检查序列。【解析】二叉搜索树不可能存在一种检索方式是后面的键值有比当前键值大的也有比当前键值小的,要么比当前键都大,要么都小。因此,2,3,10,4,8,5有可能,1,2,9,3,8,7,4,6,5绝对没可能。11.以下程序在32位机器上运行输出是____。#include <iostream>using namespace std;class animal{protected: int age;public: virtual void print_age(void) = 0;};class dog : public animal{public: dog() {this -> age = 2;} ~dog() { } virtual void print_age(void) {cout<<"Wang, my age = "<<this -> age<<endl;}};class cat: public animal{public: cat() {this -> age = 1;}? ~cat() { } virtual void print_age(void) {cout<<"Miao, my age = "<<this -> age<<endl;}};int main(void){ cat kitty; dog jd; animal * pa; int * p = (int *)(&kitty); int * q = (int *)(&jd); p[0] = q[0]; pa = &kitty; pa -> print_age(); return 0;?}【解析】

天下没有不散的宴席,也许这人间真的只有朦朦胧胧才是真。

2015 算法工程师实习生机试

相关文章:

你感兴趣的文章:

标签云: