锁定老帖子 主题:最新的阿里云面试题(java无线)
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (2)
|
|
---|---|
作者 | 正文 |
发表时间:2011-10-14
和楼主一个专业 也最恨被问到有关数学的知识
|
|
返回顶楼 | |
发表时间:2011-10-14
凤凰山 写道 jsltool 写道 为什么大家都在讨论第一题?是因为第一题没法直接写出代码?
第一题是一道证明题,答案是男女比例依然均衡。证明如下。 ①假定生孩子是每年一次(否则无法定量);②生男孩女孩的概率相同;③不考虑多胞胎的情况;④社会上的男女比例一开始就是1:1 第一年:出生50%的男孩和50%的女孩,男女比例不变,因为增加的一样多 第二年:之前生女孩的家庭要继续生,于是在去年生50%的女孩的家庭中,生出了25%的男孩和25%的女孩,现在男女比例依然不变 第二年:之前生了两个女孩的家庭要继续生,于是在去年生25%的女孩的家庭中,生出了12.5%的男孩和12.5%的女孩,现在男女比例依然不变 …………………… 可以看到,虽然每年都有人生孩子,但是每年新出生孩子的男女比例总是相同的,所以最终社会中的男女比例一直是1:1。 我个人认为前提①比较重要,算是核心条件。 哎,程序题要翻API,悲催 |
|
返回顶楼 | |
发表时间:2011-10-14
zhoulm177 写道 刚编了个程序验证一下第一题,发现结果是平衡的。呵呵,办法比较笨,但比较直观。
import java.util.Random; public class Test { /** * @param args */ public static void main(String[] args) { Random r=new Random(); int t=0;//生男生女标记 int nan=0;//男孩数 int nv=0;//女孩数 for(int i=0;i<100000;i++){//i是家庭数 do{ t=r.nextInt(2); if(t==0){ nv++;//t=0表示是女孩 }else{ nan++;//t=1表示是男孩 } }while(t==0);//t=0生女孩后继续再生 } System.out.print("女孩个数:"+nv); System.out.print("男孩个数:"+nan); System.out.print("女孩与男孩数比值:"+nv/(float)nan); } } 第一题比较简单,答案就是 1:1,但是也是一个很诱导人思路的一个题,主要是“一个家庭直到生有男孩为止,否则继续生小孩”,大家如果是计算机相关专业的就不要按照你的思路去分析了,直接动动手去证明一下,如果有时间请考虑其他题吧,像这位哥们一样拿出点能说服人的东西来,我是搞Java的,所以引用了这位哥们的话,你如果是学数学的,前边也有相关的极限证明,都没有问题。 另:额有一JAVA技术交流Q_Q群 81753923 (验证Java),希望从事Java的同胞们加入,本群禁止闲聊于Java无关的东西,如果你管不住自己闲聊请不要加入,谢谢! |
|
返回顶楼 | |
发表时间:2011-10-14
y13872888163 写道 sweat89 写道 楼主是应届生?
嗯 是的 校园招聘 对工作几年的说这应该不难 我只能说 对工作几年的可能更难 |
|
返回顶楼 | |
发表时间:2011-10-14
噜噜潘 写道 和楼主一个专业 也最恨被问到有关数学的知识
确实 一听你是数学专业的就觉得你很牛 数学很强一样 其实我数学很差的 |
|
返回顶楼 | |
发表时间:2011-10-15
最后修改:2011-10-15
关于第一题 我的结论是男孩比例偏大
具体分析在这里 http://bill600.iteye.com/blog/1197367 给一个代码验证 import java.util.ArrayList; import java.util.List; import java.util.Random; /* * 社会类 * 一个社会由多个夫妻组成 * 这个社会只关心人口比例(悲剧) */ public class Socity { private List<Couple> list;//夫妻 private int m;//男孩总数 private int f;//女孩总数 public Socity(int n){ //初始化社会,指定这个社会有多少夫妻 this.list=new ArrayList<Couple>(); for(int i=0;i<n;i++){ list.add(new Couple()); } } /** * 计算下n年后男孩的比例 * * */ public float getRateOfGender(int n){ int males=0; int famales=0; for(int i=0;i<this.list.size();i++){ list.get(i).born(n); males+=list.get(i).getmN(); famales+=list.get(i).getfN(); } m=males; f=famales; return (float)males/(famales+males); } /** * 夫妻类,这些夫妻只会生孩子(再次悲剧),他们的子女就别生了吧 * * */ class Couple{ private int mN;//男孩数量 private int fN;//女孩数量 /** * * n年了,光生孩子了 */ void born(int n){ int tempM=0; int tempF=0; Random random=new Random(); boolean stop=false; for(int i=0;i<n;i++){ if(stop){ break; } if(random.nextInt(2)==1){ tempM++; stop=true;//总算生到男孩了,可以不用生了 }else{ tempF++; } } mN=tempM; fN=tempF; } public int getmN() { return mN; } public int getfN() { return fN; } } public List<Couple> getList() { return list; } public int getM() { return m; } public int getF() { return f; } /** * 做个试验吧 * 据说社会学是不能做实验的,虚拟世界里,人也成了小白鼠 * 就用10000对夫妻做100次试验吧 * 看看10年后男孩的人口比例到底有多少 */ public static void main(String[] args){ Socity socity=new Socity(10000); float sum=0; float average=0; for(int i=0;i<100;i++){ System.out.println("第"+(i+1)+"次试验"); float rate=socity.getRateOfGender(10); System.out.println("男性比例为"+rate+" 男性 "+socity.getM()+ " 女性"+socity.getF()); sum+=rate; System.out.println(); System.out.println(); } average=sum/100; System.out.println("100次试验中男性平均比例"+average); } } |
|
返回顶楼 | |
发表时间:2011-10-17
2^3=?
bill600 写道 分析一下第一题
一对夫妻在第三年的男孩比例 一共有四种情况 第一种: 第一年生男孩 男孩的比例为1 出现的概率为1/2 第二种: 第二年生男孩 男孩的比例为1/2 出现的概率为1/4 第三种: 第三年生男孩 男孩的比例为1/3 出现的概率为1/8 第四种: 三年都是女孩 男孩的比例为0 出现的概率为1/8 则第三年男孩比例的期望值为 1*(1/2)+(1/2)*(1/4)+(1/3)*(1/8)+0*(1/8) 推广到一般情况在n年的男孩比例为:Σ(1/i)*2^(i+1) 因此 男孩的比例还是偏高的 |
|
返回顶楼 | |
发表时间:2011-10-17
OpenMind 写道 2^3=?
bill600 写道 分析一下第一题
一对夫妻在第三年的男孩比例 一共有四种情况 第一种: 第一年生男孩 男孩的比例为1 出现的概率为1/2 第二种: 第二年生男孩 男孩的比例为1/2 出现的概率为1/4 第三种: 第三年生男孩 男孩的比例为1/3 出现的概率为1/8 第四种: 三年都是女孩 男孩的比例为0 出现的概率为1/8 则第三年男孩比例的期望值为 1*(1/2)+(1/2)*(1/4)+(1/3)*(1/8)+0*(1/8) 推广到一般情况在n年的男孩比例为:Σ(1/i)*2^(i+1) 因此 男孩的比例还是偏高的 推广到一般情况的式子写错了,我改过来了 ,谢谢指正 |
|
返回顶楼 | |
发表时间:2011-10-17
y13872888163 写道
1.某国家的家庭都喜欢生男孩,而且一个家庭直到生有男孩为止,否则继续生小孩,
如果一个家庭生出了女孩,他们会继续生,就相当于这个国家多了一个家庭,而一个家庭生出男孩或者女孩的概率是50%,所以不影响男女比例。若干年后应该还是均衡的。 |
|
返回顶楼 | |
发表时间:2011-10-17
ansjsun 写道 这种题要让我去面试我肯定能过哈..最后那个题..把文件解析做成插件的形式...
用同一种接口...来实现哈哈 你第一题那么简单都答错了,肯定会被刷掉的。 |
|
返回顶楼 | |