算法工程师面试试卷。

1.一个人患了一种非常严重的疾病。医生给他开了两种药片,分别叫A片和B片,每片4片。他必须每次服用一片A和一片B,如果他犯了一个错误,他就会死。第一天,他正常吃药。然而,当他第二天吃药时,他不小心把药片弄混了。这两种药片的外观不同。

回答

把剩下的四片分成两半,一半在一堆,另一半在另一堆,第二天每次吃一堆就好。

2.5000的阶乘末尾有几个零?

回答:

1249

因为5的倍数产生一个零,25的倍数产生两个零。

125的倍数产生三个零,625的倍数产生四个零。

3025产生五个零,不管前面的计算结果如何,都比前一个多产生一个零。

5,10,15,5000 ***1000.

25,50,75,...,5000 ***200

125,250,...,5000 ***40.

625,1250,5000 * * * 8.

3125只有1。

所以* * *有1249个零。

3.母牛在3-10岁时,每年可以产下小牛,产下公牛与母牛的比例为50%。等奶牛12岁的时候,她会被送到屠宰场去买。现在有个农民有1头牛1岁。当奶牛3岁时,它们将被送到附近的农场进行繁殖。这个农民在40年后会有多少头奶牛?写相关代码或者回答思路,最好用面向对象的方法。

回答:

Java代码

包com . Polaris . test;

导入Java . util . *;

/**

*问题描述:

*

*母牛在3-10岁时,每年可以产下一头小牛,产下公牛和母牛的比例为50%。

*牛在12岁时被送到屠宰场。现在有一个农民有1头牛1岁。

*奶牛3岁时,被送到附近的农场配种。这个农民40年后可能有多少头牛?

*写相关代码或回答思路,最好使用面向对象。

* @作者北极星

* @版本1.0

*/

公共类ComputeCattleNum {

//拯救所有奶牛

私有静态列表& lt牛& gtcows = new ArrayList & lt牛& gt();

//保存当前农场主所有的奶牛。

私有静态列表& lt牛& gtcattles = new ArrayList & lt牛& gt();

公共静态void main(String[] args) {

//第一头牛

牛牛=新牛(0,3);

cows . add(cow);

// 40年

for(int I = 0;我& lt40;++i) {

//12岁以上的牛被送到屠宰场出售;每年,所有的奶牛

for(int j = 0;j & ltcattles . size();++j) {

黄牛temp = cattles . get(j);

if(temp.getDead()) {

cattles . remove(temp);

}

//刚开始只有一头母猪,年龄没长。

如果(i & gt0) {

cattles.get(j)。grow();

}

}

//母牛生小牛

for(int j = 0;j & ltcows . size();++j) {

牛犊子= cows.get(j)。熊();

如果(小腿!=null) {

if(calf.getSex()==0)

cows.add(小牛);

cattles.add(小牛);

}

}

}

系统。out . println(" 40年后归农民所有"+cattles.size()+"第一头牛");

}

}

牛类{

//牛的雌雄:0代表雌性,1代表雄性。

私人int性别;

//牛的年龄

私人年龄;

//是否出售(死)

私有布尔dead = false

公牛(不同性别,不同年龄){

this.sex = sex

this.age =年龄;

}

/**

*生小牛

* @return生下的小牛

*/

公牛熊(){

小牛=空;

if(this.sex==0) {

如果(this.age & gt= 3 & amp& ampthis.age & lt=10) {

小牛=新牛(random(),0);

}否则{

//System.out.println("不好意思,这牛太小或者太老了,生不了孩子。");

}

}否则{

//System.out.println("开什么玩笑?公牛也要它生小牛?”);

}

回归小牛;

}

private int random() {

return(int)math . round(math . random());

}

/**

*长大一岁,目前12岁就卖了。

*/

公共void grow() {

如果(this.age & gt= 12)dead = true;

else this . age++;

}

public int getSex() {

返回this.sex

}

public boolean getDead() {

归还这个. dead;

}

}

4.在宴会桌上

在一家酒店的宴会厅里,四个朋友正围着桌子和侃侃聊天。他们使用四种语言:汉语、英语、法语和日语。众所周知:

A.甲、乙、丙三方各会两种语言,丁方只会一种语言;

B.有一种语言,四个人中有三个人会说;

C.a会说日语,D不会说日语,B不会说英语;

D.甲方与丙方,丙方与丁方不能直接对话,但乙方与丙方可以直接对话;

E.没有人既懂日语又懂法语。

请问:甲、乙、丙、丁说什么语言?

回答:

第一个问题的正解

答:中国和日本

中国和法国

列车员:英国和法国

d:中号。

抓住机会发财

从前,有两个邻国,A和b,他们关系很好。他们不仅彼此之间有频繁的贸易往来,而且有共同的货币和相同的汇率。也就是说,A国的100元等于b国的100元,然而两国关系因为一次事件而破裂。虽然贸易还在继续,但两国国王互相宣布,对方货币的100元只能换成本国货币的90元。有个聪明人,他只有A国的100元纸币,却趁机发了大财。请大家想一想,这个聪明人是怎么从中发家致富的?

回答:

从A国拿100去B国换钱,然后用B国换的钱去B国换钱。

如此循环

抓紧时间

人们仍然可以在墨西哥农村看到马和驴驮着货物。一个商人从A村拉四匹马到B村,但是从A村到B村,A马需要一个小时,B马需要两个小时,C马需要四个小时,D马需要五个小时。

商人一次只能拉两匹马,回来还要骑一匹马,其中慢马就是从A村拉到B村所需的时间。听说有人花了12小时把四匹马全部从A村拉到b村,他是怎么做到的?

回答:

AB,b后4小时再来。

一张CD小时后回来。

AB在一起呆了两个小时。

一个***12小时

7.点击鼠标

鼠标点击比赛现在开始!参赛者是拉尔夫、威利和保罗。

拉尔夫可以在10秒内击中鼠标10次;威利可以在20秒钟内击中鼠标20次;保罗可以在五秒钟内点击鼠标五次。以上每个人花费的时间是这样计算的;从第一击到最后一击结束。

他们画画了吗?如果不是,谁先完成了40次鼠标点击?

回答:

拉尔夫

加速然后减速的过程。三个人的平均速度是相等的。达到中间平均速度的人可能性最大。

8.感觉

用第一感觉判断方程8+8 = 91是否正确?说明原因。

回答:

不正确。8+8=16

9.谎言

如果下面大家说的都是假的,那花瓶是谁打碎的?

夏克:吉姆打破了花瓶。

汤姆:沙克会告诉你谁打碎了花瓶。

汤姆,沙克和我不太可能打碎花瓶。

克里斯:我没有打破花瓶。

埃里克:沙克打碎了花瓶,所以汤姆和艾普不太可能打碎它。

吉姆:我打碎了花瓶。汤姆是无辜的。

答案:克里斯。吉姆的话有两个条件,只要一个是假的,就一定是假的。

10.走了一大段路

鲁道夫、菲利普和罗伯特,三个年轻人,一个成了歌手,一个考上了大学,另一个加入了美国海军陆战队。他们都将在未来取得巨大成就。众所周知:

A.罗伯特比士兵年龄大;

B.大学生比菲利普年轻;

C.鲁道夫的年龄不同于大学生。

请问:三个人中的歌手是谁?谁是大学生?士兵是谁?

辛格大学美国海军陆战队

鲁道夫X正确

菲利普真实X X

罗伯特·真X

罗伯特比菲利普年轻,比一名士兵年长。所以菲利普不是士兵。

11.麻省理工的学生

麻省理工学院的学生来自不同的国家。

大卫,比利和泰德是三个学生,一个是法国人,另一个是日本人,还有一个是美国人。众所周知:

1.大卫不喜欢面条,特德不喜欢汉堡包。

2.喜欢面条的不是法国人;

3.日本人喜欢汉堡包;

比利不是美国人。

请猜猜这三个留学生来自哪个国家?

回答:

法国人、日本人、美国人

大卫真X

比利真X

Ted X真的

喜欢汉堡包的是日本人,但泰德不喜欢汉堡包=“泰德不是日本人。

喜欢汉堡的人是日本人,所以可以假设喜欢面条的人不是日本人=“美国人喜欢面条,大卫不喜欢面条=“大卫也不是美国人。所以泰德是美国人。

喜欢面条的人不是法国人。我们假设不喜欢面条的人是法国人=“大卫是法国人。

So = "比利时日语"

然后根据假设结果逐一判断原始条件。每个条件都满足。所以上述假设成立。

如需更多(包括各种面经、书法经典),请加我QQ:719116861。马克java!