求任小龙java大神班视频解答问题

15:57 提问
java完美洗牌问题,求大神解答
完美洗牌。有n 张不同的牌(n为偶数),假设有一个洗牌高手,总是能将这n张牌分成相同数量的左右两叠,并且按照左右各一张的次序重新洗牌,一般洗牌若干次后,牌局能恢复原状。例如,假设有8张牌,编号为1~8,则洗牌的过程为:
1 2 3 4 5 6 7 8
1 5 2 6 3 7 4 8
1 3 5 7 2 4 6 8
1 2 3 4 5 6 7 8
说明经过3次洗牌后恢复原状。编程,输入偶数n,2≤n≤1024,若经过若干次洗牌恢复原状,则输出洗牌的次数;若洗牌2000次以上还不能恢复原状,则输出2000;如果输入非法数据,则输出0。例如输入8,输出3;输入52,输出8。
按赞数排序
先定义一个数组存放你要放置的牌的数量,再定义两个数组存放洗牌分成对等的两份,然后再让初始的数组从这两个数组读取内容,循环,直到完成完美洗牌
var arr=new Array(1,2,3,4,5,6,7,8) //原始数组
//定义一个数组存储原始数组
var arr1=new A
//存储完美洗牌的前半段
var arr2=new A //存储完美洗牌的后半段
//1.洗牌,将牌堆分为完美的两堆
for (var i=0;i&arr.i++) {
if(i&arr.length/2){
arr1[i]=arr[i];
arr2[j]=arr[i];
//2.将两堆排完美混合在一起,完成第一次洗牌
for (var i=0;i&arr0.length/2;i++) {
arr[j]=arr1[i];
arr[j]=arr2[i];
对数组的初始化什么的我就不写了,
你只要重复执行一和二
执行完一次加一个判断是否和原数组相同就可以得出结果了,
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐2被浏览245分享邀请回答0添加评论分享收藏感谢收起从应届生应聘网上看到的,发现自己一大半都似曾相识,但都没把握,看来还是要找个机会认真做过去,今天没机会了,明天吧.这些东西技术面肯定要准备的,鄙视中博的纯水面试.
几乎整整一天的时间都扑在这套题上了,收获也不少,接口,抽象类,内部类等等以前不是很明白的都重新了解了一遍.会做的系统解说了一下,不会做的 GOOGLE后分析理解辨别真伪后总结了过来,会做但没把握的都自己编写测试代码在eclipse上过了一遍.可以说这套题花费了很大精力.浏览量和跟帖 量都是浮云,目的只是为了自己能提高,以面对接下来的面试和笔试,做到不打无把握之仗.对自己说----Good Luck!
终于...32题全部答完,个别题目不想再深究了,就这样吧.
此题解答100%原创,要转载请注明出处.
第一,谈谈final,finally,finalize的区别。最常被问到。
我在另一篇随笔里有写到.
  第二,anonymousinnerclass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
不行,对于匿名内部类,看到的一句话说的很到位:
new &类或接口& &类的主体&
这种形式的new语句声明一个新的匿名类,他对一个给定的类进行扩展,或实现一个给定的接口。他还创建那个类的一个新实例,并把他作为语句的结果而返回。
这就是匿名类的实质,它本身就是一个类的继承或一个接口的实现,所以继承其它类或借口是无意义的.在eclipse中冶证实了我的想法.无论是继承其它类还是实现其它借口都显示Syntax error on token
  第三,staticnestedclass和innerclass的不同,说得越多越好(题有的很笼统)。
static nested class 指静态嵌套类,或称嵌套类,是C++中常用的说法,inner class指内部类,是JAVA中的说法.
内部类是一个类内部类的统称,具体分为四种:成员类,静态成
员类,局部类,匿名类.其中匿名类是局部类的特殊情况.对于成员类和静态成员类都存在于类的顶层代码中,相当于类的静态方法和非静态方法的关系,区别在于
成员类依赖于类实例而静态成员类不依赖.所以前者只能访问实例方法和成员而后者只能访问静态方法和成员.它们都用于创建一个只和当前类有关,和其它类无关
的依赖类.是否静态取决于是否依赖类的实例.局部类相当于局部变量,存在于类的局部代码中,相当于在main()中随意定义和使用类,唯一的不同是它只能
使用final型的局部变量,这和垃圾回收机制有关,即局部变量会在代码块结束后被回收,而对象不一定,所以对象只能使用final的局部变量,同样,局
部类存在的局部代码块也可以有静态和非静态的差别.局部类罪常见的应用就是匿名类.匿名类就是无名子的局部类,常在SWING设计中的添加监听中出现.
static nested class相当于inner class中的静态成员类.
实例代码就不贴了,太累,发个地址,这篇帖子说的相当详细,就是有点累赘.
http://java.chinaitlab.com/oop/725592.html
  第四,&和&&的区别。这个问得很少。
&和^,&&,&&&,|同属于位运算符,其中&是按位与,例如,1&1=1,1&0=0,&&是逻辑运算符,处理真假值,例如,true&&true=true
  第五,hashmap和hashtable的区别。常问。
hashmap可以看做是hashtable的替代
者,HashMap的Value和Key都可为NULL,而HashTable不可以,同时,HashTable是线程同步的,而HashMap不
是.HashTable用Iterator遍历,HashMap用Enumeration遍历.HashTable
中hash数组默认大小是11,增加的方式是&old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数。计算index的方
法不同,HashTable直接利用hashcode()得出,HashMap对hashcode重新计算得出.
关于JAVA容器类的详细内容可以参考http://selives.blogbus.com/logs/.html
  第六,collection和collections的区别。你千万别说一个是单数一个是复数。
collection是结合类的上级接口,子接口有List和Set等,Collections是java.util下的一个工具类,提供一些列静态方法对集合搜索排序线程同步化等.
  第七,什么时候用assert。api级的技术人员有可能会问这个。
在调试和优化中使用,用于判断逻辑表达式真假,若为假,终止
程序并返回异常.assert比if的优点在于可以选择是否开启assert检查,也就是说assert产生的测试代码可以在正式发布时候选择忽略,这带
来极大便利,默认assert检查是关闭的.此外,Junit相比assert来说,有着相似但更强大的测试能力,
  第八,gc是什么?为什么要有gc?基础。
GC 即 garbage collection(垃圾收集),是JAVA用于回收内存的一种方式,主要的实现方法有引用计数,标记回收,复制清除等,GC可以避免内存泄露和堆栈溢出,有效提高内存的利用效率,同时将程序员从繁琐的内存管理中释放出来.
  第九,string s=new string("xyz");创建了几个stringobject?
2个,文字池中1个,堆中1个.先在文字池中创建1个"xyz"对象,再在堆中拷贝一个"xyz"对象,并将其赋给引用s.
详细机制可以参考:http://wyz191.javaeye.com/blog/139171,原文写得非常好,除此之外提到的字符串连接也值得注意和思考
  第十,math.round(11.5)等於多少?math.round(-11.5)等於多少?
Math.round(x)相当于(int)Math.floor(x+o.5f),
故math.round(11.5)=Math.floor(11.5+0.5)=Math.floor(12)=12;
Math.round(-11.5)=Math.floor(-11)=-11;
  第十一,short s1=1;s1=s1+1;有什么错?short s1=1;s1+=1;有什么错?面试题都是很变态的,要做好受虐的准备。
s1=s1+1会出错,s1+1是int型,不能将int赋值给s1.需要显示转换,s1=(int)(s1+1).而s1+=1不会出错,至于原因,有人说和编译器的机制有关,需要看编译原理,⊙﹏⊙b汗,话说编译原理什么的最讨厌了,就这样吧.
  第十二,sleep()和wait()有什么区别?搞线程的最爱。
1,sleep()是java.lang.Thread中的静态方法,wait()是java.lang.Object中的方法
2,sleep()用作当前线程阻塞自己,并在制定时间后恢复,wait()用于当前线程决定其他线程阻塞,是线程通信的表现.
3,sleep()不释放资源,wait()释放资源.
4,sleep()必须捕获异常,而wait()不需要.
  第十三,java有没有goto?很十三的问题,如果哪个面试的问到这个问题,我劝你还是别进这家公司。
goto是java的关键字,但java不支持
goto,goto会影响程序的可读性,使逻辑显得混乱.我的这本java教程上说因为同样的原因,要尽量少用continue和break,且可以用等
价的无continue/break循环代替,更不要说goto了...总之一句话,java不支持goto
  第十四,数组有没有length()这个方法?string有没有length()这个方法?
数组无,数组是成员变量,length.String是成员函数length();我不知道这个题意义何在,平时都用eclipse的,会在意这个么...
  第十五,overload和override的区别。overloaded的方法是否可以改变返回值的类型?常问。
我写的一篇随笔详细说明了重载,重写和多态之间的关系,返回值类型不包含在函数签名中,所以只有返回值不同的重载不成立.
  第十六,set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用hashcode()还是equals()?它们有何区别?
这个属于集合类的查找机制问题,在集合类中,确定两个元素是
否相同,是用equals方法进行比较,hashcode的存在在于可以给元素快速分配一个index来存储.可以将collection看做很多个大箱
子,index是箱子的编号,先将要扔进去的物品进行hash确定index,扔进响应箱子,然后再喝箱子里德其它物品equals()来比较是否相同.
此外,相等的物品一定具有相同的hashcode,不等的物品不一定.具有相同hashcode的元素不一定相等.不同的hashcode的元素肯定不
等.以上规则可以想象一下相等物品一定要分在同一个箱子中的情况.
  第十七,给我一个你最常见到的runtimeexception。如果你这个答不出来,面试的人会认为你没有实际编程经验。
NullPointerException,空引用异常.说实话,中软的笔试题就有这个,我连题目意思都理解错了,压根没认出来runtime exception是指运行时异常.
  第十八,error和exception有什么区别?
为什么水的题最容易出现?
感觉这个题很水,要说C++的话有区别,感觉JAVA里区别
不大.反正中软的题目里我就瞎扯了.单纯从字面的角度去说,error就是严重的错误,像JVM产生的一些错误等,会停止程序运行或产生错误结
果.exception是一定程度上可预见的错误,可以捕获以及处理.其实error也可以捕获...
  第十九,list,set,map是否继承自collection接口?
Collection的子接口包括, , &E&, &E&, &E&, &E&, .不包括Map
差点被某网页忽悠了,还是JAVA DOC比较专业.Collection的详细定义见http://www.jingningedu.com/manage/java_api/index.html?java/awt/GridLayout.html
  第二十,abstractclass和interface有什么区别?常问。
真的是常问...在中软笔试题中出现...
抽象类可以有抽象方法和普通方法,也可以有自己的数据成员.接口只允许有常量,抽象方法和静态类成员.接口可以被多继承,抽象类不行.接口被实现时,所有方法必须被重写.抽象类被继承时如果有抽象方法没被重写,则子类也为抽象类.
  第二十一,abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
abstact方法需要子类重写,重写的概念是就实例方法而
所以不能是static.因为同一原因,要重写就不能native,抽象方法在抽象类中,无实例,不能被调用,也没有内容,所以synchronized
没有意义.abstract方法的修饰符只有private和public
  第二十二,接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体类(concreteclass)?
接口可以继承接口,抽象类可以实现接口,抽象类可以继承实体类.换句话说,抽象类除了不能实例化以外和普通类没什么区别.
  第二十三,启动一个线程是用run()还是start()?
用start(),start()会通过调用run()来实现多进程.
详细原理见:http://blog.csdn.net/yakihappy/archive//3979902.aspx
  第二十四,构造器constructor是否可被override?
构造函数不能被重写.
  第二十五,是否可以继承string类?
String类为final,不可被继承.
  第二十六,当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
多线程编程涉及不多,运用到锁的更是少的可怜,找到篇关于这个问题很详尽的分析帖,直接将结果拿过来.
1 可以进入此对象其他非同步方法.
2 不可进入此对象此同步方法
3 不可进入此对象其他同步方法
详细分析见:http://blog.csdn.net/yexianyi/archive//4125633.aspx
  第二十七,try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?
return前被执行,有程序为证:
retrunfinallyreturn 1
  第二十八,编程题:用最有效率的方法算出2乘以8等於几?有c背景的程序员特别喜欢问这种问题。
  第二十九,两个对象值相同(x.equals(y)true),但却可有不同的hashcode,这句话对不对?
这句话本身没有错,equals和hashcode都是
Object的方法,都可以覆盖并由程序员自己决定算法,完全可以做到以上要求,但问题是如果是Collection中的元素,这样做会带来一些错误,一
些不可预知的错误,所以在Collection中这样做是禁止的.
  第三十,当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
引用传递,毫无疑问,对象传递只能是引用.你可以换改变引用的内容,但并不能改变引用本身.
  第三十一,swtich是否能作用在byte上,是否能作用在long上,是否能作用在string上?
switch语句中的表达式只能是整数类型,即必须是int,char或者枚举类型数据.不能是boolean或浮点型,甚至其他类型的整数数据(byte,short及long).
从教材上摘录而来,应该相当权威了.
  第三十二,编程题:写一个singleton出来。
singleton模式即确保一个类只有一个实例.应用级singleton好像比较复杂,但最简单的singleton还是很好实现的.
阅读(...) 评论() &最新问题:
合作网站:
· · · · · · · · · · · · · ·
爱问答(www.2word.com) 这里有最全的问题解决答案,帮您解决生活中的疑惑!}

我要回帖

更多关于 小码哥java大神班视频 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信