大部分解答为牛客网各位同学的精彩回答,本文只是选择一些互联网常考题目记录备忘

1.一个类的构造器可以调用这个类中的其他构造器:

this的作用其中一个就是在一个构造方法中调用另一个构造方法,格式为this(参数);如 this(x)

super是调用父类的方法;

A(a)这种形式是在new一个类时使用。

子类的构造方法总是先调用父类的构造方法,如果子类的构造方法没有明显地指明使用父类的哪个构造方法,子类就调用父类不带参数的构造方法。
        而父类没有无参的构造函数,所以子类需要在自己的构造函数中显式的调用父类的构造函数。用super,不然编译报错。

2.类的初始化顺序:

类的初始化顺序是:

1、初始化父类中的静态成员变量和静态代码块。

        2、初始化子类中的静态成员变量和静态代码块。

        3、初始化父类中的普通成员变量和代码块,在执行父类中的构造方法。

        4、初始化子类中的普通成员变量和代码块,在执行子类中的构造方法。

执行顺序优先级:静态块>main()>构造块>构造方法

静态块:用static申明,JVM加载类时执行,仅执行一次,静态块按声明顺序执行

构造块:只用{}括起来的代码,是独立的,必须依附载体才能运行,new时在构造方法前调用,为减少代码量

静态块间按声明顺序执行,静态块只执行一次。先执行B t1的声明,调用构造块再调用默认的构造方法。因为执行了静态变量t1的初始化,意味着已经加载了B的静态域的一部分,这时候不能再加载另一个静态域了(好奇的那个静态块),否则属于重复加载了。这样两个静态变量调用了两次构造块,接着调用静态块。再进入主函数B t调用构造块和默认的构造方法。

3.类方法调用:

在类方法中调用本类的类方法可直接调用。 实例方法也叫做对象方法。

类方法是属于整个类的,而实例方法是属于类的某个对象的。

由于类方法是属于整个类的,并不属于类的哪个对象,所以类方法的方法体中不能有与类的对象有关的内容。即类方法体有如下限制:

(1) 类方法中不能引用对象变量;

(2) 类方法中不能调用直接调用类的对象方法;

(3) 在类方法中不能使用super、this关键字。

(4) 类方法不能被覆盖。

如果违反这些限制,就会导致程序编译错误。与类方法相比,对象方法几乎没有什么限制:

(1) 对象方法中可以引用对象变量,也可以引用类变量;

(2) 对象方法中可以调用类方法;

(3) 对象方法中可以使用super、this关键字。

4. 

i++是先取值再加,所以第一个括号里表达式值为5,出了括号后i的值为6

++i 是先加再取值,所以第二个括号里表达式的值相当于6+1之后取值为7,出了括号后i的值为7

i--是先取值再减,所以第三个括号里表达式值为7,出了括号后i的值为6

--i是先减再取值,所以第四个括号里表达式的值相当于6-1之后取值为5,出了括号后i的值为5

综上s=5+7+7+5=24

5.Java中对于文本文件和二进制文件,都可以当作二进制文件进行操作。

6.

     答案:由于String s没有初始化,代码不能编译通过。
     解析:成员变量有初始值,没有赋值也有对应属性的默认值,而局部变量没有初始值的
 

7.子类能继承父类的所有成员:

子类从其父类继承所有成员(字段,方法和嵌套类)。 构造函数不是成员所以它们不被子类继承,但是可以从子类调用超类的构造函数。

继承具有传递性

1,2,3行声明全都是正确的

8.

9.对于外部类来说,只有两种修饰,public和默认(default),因为外部类放在包中,只有两种可能,包可见和包不可见。

对于内部类来说,可以有所有的修饰,因为内部类放在外部类中,与成员变量的地位一致,所以有四种可能。

静态内部类可以访问外围类的静态数据,包括私有数据,但不能访问非静态数据;

非静态内部类可以直接访问外围类的数据,包括私有数据

10.接口关系:

11.java加载器:

12.

13.成员变量是放在堆上的,局部变量是放在栈上的

14.

接口方法默认是public abstract的,且实现该接口的类中对应的方法的可见性不能小于接口方法的可见性,因此也只能是public的

答案为 public void fly(){...}

随着JDK发展、访问权限发生了变化,详见25

15.静态变量只能在类主体中定义,不能在方法中定义

16.

答案:Result=150 Result=150

针对非静态方法不论向上或者向下转型,都是一句话,“编译看左边,运行看右边”。也就是编译时候,会看左边引用类型是否能正确编译通过,运行的时候是调用右边的对象的方法。但是对于成员变量,都是看左

    

17.

    

    答案:false ,false ,true

    

18.子类方法重写父类方法遵循“两同两小一大”的规则:

    

19.

    

20.

    

        答案:///MyClass.class

        解析;由于replaceAll方法的第一个参数是一个正则表达式,而"."在正则表达式中表示任何字符,所以会把前面字符串的所有字符都替换成"/"。如果想替换的只是".",那么久要写成"\\.".

21.

    

22.集合对象中哪几个是线程安全的:

    

    类中有哪些是线程安全的:

        StringBuffer

        Properties,因为其继承了HashTable

23.

    

        答案:func1、func4

        解析:数据类型转换问题。由大到小需要强制转换,由小到大不需要。

        其中long转为float特别,long转float不需要强制转换,float表示的范围比long大

        

24.hashcode与equals的约定关系:

    (1)如果两个对象相等,那他们一定有相同的哈希值

    (2)如果两个对象的哈希值相等,那这两个对象可能相等可能不等,需要再通过equals来判断

25.接口、抽象类中的方法默认访问权限:

    

含有abstract修饰符的class即为抽象类abstract类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。

接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final

总结:下面比较一下两者的语法区别:  
    1.抽象类可以有构造方法,接口中不能有构造方法。  
    2.抽象类中可以有普通成员变量,接口中没有普通成员变量 ,默认是用public final static 修饰的静态常量
    3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。  
    4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然 eclipse下不报错,但应该也不行),但接口中  的抽象方法只能是public类型的,并且默认即为public abstract类型。  
    5. 抽象类中可以包含静态方法,接口中不能包含静态方法  
    6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是            public static final类型,并且默认即为public static final类型。  
    7. 一个类可以实现多个接口,但只能继承一个抽象类。

另外:

抽象类可以声明一个引用指向子类,如A是抽象父类,B是子类。A含有一个静态方法get返回一个B的实例,则A  a=A.get()可行(常见用法),也可A  b=new B()

常见new一个接口其实是使用了匿名类,匿名类实现了new 的那个接口,所以之后还有写方法体实现接口中的方法

26.Runnable r=new Runnable(){ 

        public void run(){

            ...

        }

    }

    解析:这只会出现在一个类的内部,接口不能实例化,这是匿名内部类的语法和用法。表示一个实现了Runnable的新类的一个对象。匿名内部类可以不声明显示的对象而直接实例化抽象方法或接口。

27.Java程序种类:Applet、Application、Servlet

28.Java标识符:

    Java标识符由数字、字母、下划线(_)、美元符号($)或人民币(¥)组成,首位不能是数字。并且Java关键字不能作为标识符

29.java中数据类型分类:注意区分原生类型和引用类型

    

30.运行时异常:

    

31.JVM内存参数:

    

    

32.TCP建立过程及相关函数调用:

    

33.JRE判断程序是否执行结束的标准是:所有的前台进程执行完毕

    

34.

    

    答案:编译通过并输出结果false

    解析:类中声明的变量有默认初始值,方法中声明的变量没有默认初始值,必须在定义时初始化

35.

    

    答案:编译错误

    解析:

    

36.

    

    答案:O(n^2)

    解析:

    

37.

    

    

    解析:

    

38.

    

   

    解析:Test test=null;这里也会加载静态方法,所以test数据中包含Test类的静态初始化数据,但是test并不能调用该类的非静态数据(运行是A,争议较大的答案中感觉最合理的,实在不行记着这种情况)

39.

    

    答案:

        

    解析:

java虚拟机中类加载分为5个阶段,加载,验证,准备,解析,初始化,准备阶段是正式为类变量分配内存并设置类变量初始值的阶段,即给变量赋默认的初始值,count1,count2准备阶段之后,值为1;初始化阶段才会执行所有类变量的赋值动作和静态语句块。

        

    如果将 private static Singleton obj = new Singleton();放置到public static int counter2 = 0;后面则:

40.一个类中实例方法可以直接使用该类中其他实例方法,即使是private

        

41.    

数值与包装类进行==比较:如Integer 与int,Long与long进行==比较时,会自动拆箱;不同类型之间进行比较,如果有一方为非包装类,则会自动拆箱。如果两方都为包装类,则不会拆箱,且不能比较,编译会报错

两个Integer类型进行“==”比较, 如果其值在-128至127  ,那么返回true,否则返回false, 这跟Integer.valueOf()的缓冲对象有关

    Integer和new Integer : new Integer会创建对象,存储在堆中。而Integer在[-128,127]中,从缓存中取,否则会new Integer. 
所以 Integer和new Integer 进行==比较的话,肯定为false ; Integer和new Integer 进行equals比较的话,肯定为true

new Integer和new Integer进行==比较的时候肯定为false ; 进行equals比较的时候,肯定为true。原因是new的时候,会在堆中创建对象,分配的地址不同,==比较的是内存地址,所以肯定不同

两个包装类进行equals()比较,首先equals()会比较类型,如果类型相同,则继续比较值,如果值也相同,返回true。

   包装类类型调用equals(),但是参数是基本类型,这时候,先会进行自动装箱,基本型转换为其封装类型,再进行3中的比较。 

包装类的“==”运算在不遇到算术运算的情况下不会自动拆箱

   包装类的equals()方法不处理数据转型

42.说明输出结果

TestSuper和Date的getClass都没有重写,他们都是调用Object的getClass,而Object的getClass作用是返回的是运行时的类的名字。这个运行时的类就是当前类,所以

在调用getName()方法而getName()是:包名+类名

43.在java7中,下列不能做switch()的参数类型是:

    switch语句后的控制表达式只能是short、char、int、long整数类型和枚举类型,不能是float,double和boolean类型String类型是java7开始支持。

44.  true,false,null不是关键字。而是常量

45.“System.out.println()”来输出信息,语句中的System、out、println分别是什么?

System是java.lang中的一个类,out是System内的一个成员变量,这个变量是一个java.io.PrintStream类的对象,println()是java.io.PrintStream类的方法

46. what is the result of the following code?

    

47.hashMap跟hashTable的区别:

HashMap和HashTable都实现了Map接口

HashMap是非synchronized,而HashTable是synchronized的

HashMap使用iterator。HashTable使用了iterator,由于历史原因还使用了Enumeration

HashMap重新计算hash值,而且用与代替取模。HashTable直接使用对象的hashcode

48.以下代码执行的结果是多少?

输出结果:

(1)首先静态方法,不存在重写,重写只对可见的实例方法有效。静态方法只有隐藏。所以子类的sub中并没有重写父类的方法

    (2)重载是根据形参的静态类型确定调用的方法版本,重写是根据调用者在运行期的实际类型来确定调用的方法版本。既然getType不是重写那就是两个不同的静态方法。依据编译看左运行看右知道subToSuper是Super类所以调用Super类的方法

     语言类的分派一共四种,静态单分派,静态多分派,动态单分派,动态多分派,而 Java 是一种静态多分派动态单分派语言

java的多态有两种,一种基于重载的静态分派,一种是基于重写的动态分派。其中静态方法,私有方法,构造方法,父类方法,final方法称为非虚方法,其他为虚方法。多态的机制是建立在虚方法的基础上。这句话说明了两点:1.多态的行为只作用在方法上     2.static、final、private修饰的方法以及构造方法不存在多态的行为。申明是哪个类的就调用哪个类的

    

普通方法,运用的是动态单分配,是根据new的类型确定对象,从而确定调用的方法;

    静态方法,运用的是静态多分派,即根据静态类型确定对象(声明的类型),因此不是根据new的类型确定调用的方法

49.java运算符优先级:

    单目算数位关系,逻辑三目后赋值

单目:单目运算符+ –(负数) ++ -- 等 
    算数:算数单目运算符* / % + - 
    位:位移单目运算符<< >> 
    关系:关系单目运算符> < >= <= == != 
    逻辑:逻辑单目运算符&& || & | ^ 
    三目:三目单目运算符A > B ? X : Y 
    后:无意义,仅仅为了凑字数 
    赋值:赋值=

50.正确的数组声明语句:

数组命名时名称与[]可以随意排列

声明的二维数组中第一个中括号(行数)中必须要有值,它代表的是在该二维数组中有多少个一维数组

51.JDK1.8 的 ConcurrentHashMap 采用CAS+Synchronized保证线程安全。 JDK1.7 及以前采用segment的分段锁机制实现线程安全,其中segment继承自ReentrantLock,因此采用Lock锁来保证线程安全。

Arrays.asList()  返回  java.util.Arrays.ArrayList 对象,这里的 ArrayList 是 Arrays 私有的内部类。并非java.util.ArrayList类。

SimpleDateFormat是线程不安全的

52.静态内部类不可以直接访问外围类的非静态数据,而非静态内部类可以直接访问外围类的数据,包括私有数据

53.

答案输出false

首先==优先级比?:高,所以变为b = true?false:true?false:true,为true所以返回false

54.Consider the following code:

String s=null;

Which code fragments cause an object of type NullPointerException to be thrown?

解析:String为引用类型,如果对象为null,也就是说这个对象都不存在了,再去调用对象的相关方法,肯定会报空指针异常。这里调用了String类的length()方法。&&和||具有短路的效果,在进行&&时,如果&&前的是false,那么&&后的不再执行,直接返回false,同理||也一样。所以BD的s.length()不会被执行,AC会抛出空指针异常.

55.

输出:22 34 17

解析:https://blog.csdn.net/zhumintao/article/details/53818972

几个点要注意:子类继承父类,调用方法时先调用子类中的方法,如果没有就调用父类中的方法

一旦try{ }中返回了某一个值,如果finally有返回值,finally中的返回值会覆盖try的返回值,如果finally没有返回值,就是try中的返回值。

56.接口  对象名=new  接口实现类;和 类  对象名=new  对象类;的区别

这是多态的一种基本应用,实践于对修改关闭,对扩展开放。

接口不能实例化,用接口的实现类可以实例化,将实现类的对象在内存中的地址指向接口,这个接口就可以使用了

接口  对象名体现了多态,应该优先使用接口而不是类来引用对象,但只有存在适当的接口类型时

使用接口类去引用对象是有前提条件的——即实现类中全是接口类的方法的实现,没有自己单独的方法。当实现类存在自己的方法时,使用实现类来声明变量。

因为以接口声明的对象只能调用接口中声明的方法,而不能调用类中特有的方法,除非使用时明确转型

https://blog.csdn.net/u011212549/article/details/52048790

https://m.imooc.com/qadetail/200041

https://blog.csdn.net/summerxiachen/article/details/79733800

面向接口编程的好处:

(1)方便维护与扩展,遵守开闭原则

(2)分离设计与实现,使得系统可以支持依赖倒转原则。设计师可以设计出接口,而程序员可以依照接口去写实现。

(3)在一定程度上解耦合,依赖接口还不依赖具体实现,在替换实现类的时候,可以将影响减到最小。

(4)实现多态。Spring  IoC

https://blog.csdn.net/jj_nan/article/details/70161086

https://blog.csdn.net/nvd11/article/details/42305895

https://blog.csdn.net/u014508939/article/details/74312041

https://blog.csdn.net/HytXwz/article/details/80556386

57. java用来运行一个.class文件

javadoc用来生成api文档

jar用来生成jar包

javac用来把.java文件编译为.class文件

jdb是java的调试器

javaprof是剖析工具

58.下面代码的输出是什么?

输出:null

解析:new Sub();在创造派生类的过程中首先创建基类对象,然后才能创建派生类。创建基类即默认调用Base()方法,在方法中调用callName()方法,由于派生类中存在此方法,则被调用的callName()方法是派生类中的方法,此时派生类还未构造,所以变量baseName的值为null

59.JSP内置对象和属性列举如下

application对象是共享的,多个用户共享一个,以此实现数据共享和通信

内置对象里没cookie

60.

对于外部类来说,只有两种修饰,public和默认(default),因为外部类放在包中,只有两种可能,包可见和包不可见。

对于内部类来说,可以有所有的修饰,因为内部类放在外部类中,与成员变量的地位一致,所以有四种可能。

61.内部类总结

62.两个互相引用对象的垃圾回收

深入理解java虚拟机一书中提及判断对象是否存活的方法有引用计数法和可达性分析法

(1)引用计数法即给对象添加一个引用计数器,每当有一个地方引用它时,计数器值就加1。当引用失效时,计数器值就减1。任何时刻计数器为0的对象就是不可能再被使用的。

但是主流的java虚拟机没有采用引用计数算法,其中最主要的原因就是它很难解决对象之间互相循环引用的问题。

对象A和B互相引用,导致他们的引用计数都不为0,于是引用计数算法无法通知GC收集器回收他们。

(2)可达性分析法是主流的实现,通过一系列的被称为“gc roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到“gc roots”没有任何引用链相连时,则证明此对象是不可用的。

可以作为“gc roots”的对象:

1.虚拟机栈(栈针中的局部变量表)中引用的对象

2.方法区中类静态属性引用的对象。

3.方法区中常量引用的对象

4.本地方法栈中JNI引用的对象。

所以此种方法中即使对象AB互相引用也会被回收

对于可达性分析算法而言,未到达的对象并非是“非死不可”的,若要宣判一个对象死亡,至少需要经历两次标记阶段

1. 如果对象在进行可达性分析后发现没有与GCRoots相连的引用链,则该对象被第一次标记并进行一次筛选,筛选条件为是否有必要执行该对象的finalize方法若对象没有覆盖finalize方法或者该finalize方法是否已经被虚拟机执行过了,则均视作不必要执行该对象的finalize方法,即该对象将会被回收(没有第二次机会了)。反之,若对象覆盖了finalize方法并且该finalize方法并没有被执行过,那么,这个对象会被放置在一个叫F-Queue的队列中,之后会由虚拟机自动建立的、优先级低的Finalizer线程去执行,而虚拟机不必要等待该线程执行结束,即虚拟机只负责建立线程,其他的事情交给此线程去处理。

2.对F-Queue中对象进行第二次标记,如果对象在finalize方法中拯救了自己,即关联上了GCRoots引用链,如把this关键字赋值给其他变量,那么在第二次标记的时候该对象将从“即将回收”的集合中移除,如果对象还是没有拯救自己,那就会被回收。如下代码演示了一个对象如何在finalize方法中拯救了自己,然而,它只能拯救自己一次,第二次就被回收了。

相关垃圾回收知识:

强软弱虚四种引用

GC是完全自动的,不能确定具体的回收时间。gc只能释放堆上的内存,而局部变量放在栈上,栈上的内存必须用finalize()释放

https://www.cnblogs.com/xiaoxi/p/6486852.html

63.字符串类内存空间解释

字符串String对象在堆内存上有两种空间:

(1)字符串池(String pool):特殊的堆内存,专门存放String对象,且不会有重复的值。

(2)普通堆内存空间:此处的String对象一般是通过调用new操作符得到。

http://www.cnblogs.com/InformationGod/p/9471450.html

64.synchronized和lock比较

https://www.cnblogs.com/jiangds/p/6476293.html

65.hashmap原理和currentHashmap

结构:内部是通过 数组 + 链表 的结构实现的

索引:首先计算keyhashcode,再对hashcode进行二次hash,然后再对数组的长度进行取模

java8的性能改善:使用中会出现拉链过长的情况,一旦出现拉链过长,则会严重影响HashMap的性能。于是,在JDK1.8版本中,对数据结构做了进一步的优化,引入了红黑树。而当链表长度太长(默认超过8)时,链表就转换为红黑树(那一条过长的链转化,其他不变),利用红黑树快速增删改查的特点提高HashMap的性能,其中会用到红黑树的插入、删除、查找等算法。

当插入新元素时,对于红黑树的判断如下:

判断table[i] 是否为treeNode,即table[i] 是否是红黑树,如果是红黑树,则直接在树中插入键值对,否则转向下面;

遍历table[i],判断链表长度是否大于8,大于8的话把链表转换为红黑树,在红黑树中执行插入操作,否则进行链表的插入操作;遍历过程中若发现key已经存在直接覆盖value即可;

扩容时机:当前容器的元素个数,如果大于等于阈值(当前数组的长度乘以负载因子的值)的时候,就要自动扩容啦

扩容因子:系统默认负载因子为0.75,最好初始大小值默认为16(大于元素个数的最小2的幂)

扩容:扩容(resize)就是重新计算容量,初始化一个新的数组再将数组的值转移到新数组里,并且修改hashMap对该数组的引用指向新的数组。扩容一次为2倍大小

https://www.cnblogs.com/hongdada/p/6024832.html

Segment 是一种可重入锁(继承ReentrantLock)

    currentHashMap负载因子0.75,初始容量 16,concurrencyLevel 实际上是Segment的实际数量。

ConcurrentLevel 一旦设定的话,就不会改变。ConcurrentHashMap当元素个数大于临界值的时候,就会发生扩容。但是ConcurrentHashMap与其他的HashMap不同的是,它不会对Segmengt 数量增大,只会增加Segmengt 后面的链表容量的大小。即对每个Segmengt 的元素进行的ReHash操作。

    HashEntry是volatile的

    https://blog.csdn.net/jjc120074203/article/details/78625433

66.sleep方法和wait方法的区别

sleep 是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep 不会释放对象锁

wait 是Object 类的方法,对此对象调用wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify 方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。

使用范围:wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在任何地方使用

sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常

    为什么wait(),notify()方法要和synchronized一起使用:

    因为wait()方法是通知当前线程等待并释放对象锁,notify()方法是通知等待此对象锁的线程重新获得对象锁,然而,如果没有获得对象锁,wait方法和notify方法都是没有意义的,即必须先获得对象锁,才能对对象锁进行操作,于是,才必须把notify和wait方法写到synchronized方法或是synchronized代码块中了。

    https://www.cnblogs.com/jiangyi-uestc/p/5679464.html

67.java nio是同步非阻塞的

同步体现在 selector 仍然要去轮循判断 channel 是否准备好,非阻塞体现在这个过程中处理线程不会一直在等待,可以去做其他的事情。

68.java ==和equals

对于==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;

    如果作用于引用类型的变量,则比较的是所指向的对象的地址

 对于equals方法,注意:equals方法不能作用于基本数据类型的变量

    如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;

    诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

69.在编译程序时,所能指定的环境变量不包括class path

javac一次可同时编译数个Java源文件

javac.exe能指定编译结果要置于哪个目录(directory)

70.

正确答案:true     false

解析:这题是在考编译器的优化,hotspot中 编译时"tao"+"bao"将直接变成"taobao",b+c则不会优化,因为不知道在之前的步骤中bc会不会发生改变,而针对b+c则是用语法糖,新建一个StringBuilder来处理

71.下列不属于Java语言性特点的是

真数组: 数组元素在内存中是一个接着一个线性存放的,通过第一个元素就能访问随后的元素,避免了数据覆盖的可能性,和数据类型覆盖并没有关系。

72.

牛客网刷题-java相关推荐

  1. 牛客网刷题java之(斐波那契数列)一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

    题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 分析: 对于本题,前提只有 一次 1阶或者2阶的跳法. a.如果两种跳法, ...

  2. 牛客网刷题java之变态跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

    题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级--它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 分析: 其实和普通的只能跳一个和两个台阶的思路是一样的,都是为了求迭代表达式. ...

  3. 【牛客网刷题】中秋节前开启java专项练习错题总结第一天

    [牛客网刷题]中秋节前开启java专项练习错题总结第一天 概述 写在前面 错题分析 值得记录的错题 总结 写在最后 概述 还有十几天就到中秋节了,从此又老了一岁,也多了一年的知识积累.对于这样一个特殊 ...

  4. 牛客网刷题记录 || 结构体和类

    这是牛客网刷题记录专栏第五篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统.题库.课程教育.社群交流.招聘内推于一体的优质网站,牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人 ...

  5. 牛客网刷题之SQL篇:非技术快速入门39T

    导航 前序 一.简单的关键字练习 1-10 二.知识点复习之 ==运算符== 1.算数运算符 2.比较运算符 3.逻辑运算符 4.位运算符 三.10-28T 0.简单题总结 1. SQL18 ==分组 ...

  6. 2023年大年初一 —— 牛客网刷题经验分享~

    2023年大年初一 -- 牛客网刷题经验分享~

  7. 牛客网 刷题前的准备工作(输入 输出 如何接收?)

    牛客网 刷题前的准备工作 牛客网 刷题前的准备工作 1. 数据读取接受问题 2.牛客刷题前的准备: 2.1. 弄清楚输入输出的行数关系 3.代码怎么写 3.1. 在牛客上测试自己的模板代码,是否能正确 ...

  8. 牛客网刷题记录 || 循环

    这是牛客网刷题记录专栏第七篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统.题库.课程教育.社群交流.招聘内推于一体的优质网站,牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人 ...

  9. verilog牛客网刷题代码汇总

    verilog牛客网刷题代码汇总 作者:安静到无声 个人主页 作者简介:人工智能和硬件设计博士生.CSDN与阿里云开发者博客专家,多项比赛获奖者,发表SCI论文多篇. Thanks♪(・ω・)ノ 如果 ...

最新文章

  1. dp、sp和px的区别
  2. SQL 2008中修改表结构提示“阻止保存要求重新创建表的更改”
  3. NFC Basics(基本NFC)——翻译自developer.android.com
  4. 线程工具类(根据电脑逻辑处理器个数控制同时运行的线程个数)
  5. Dotnet core使用JWT认证授权最佳实践(二)
  6. 获取0~100之间的随机数
  7. php常见预定义常量,php跨平台小结 常用预定义常量
  8. channelinactive触发后不关闭channel_golang chan 最详细原理剖析,全面源码分析!看完不可能不懂的!...
  9. 在Eclipse下出现dobbo索引错误,解决方案
  10. .net微信公众平台源码,微信营销平台源码(微网站,微商城,微营销,微会员)
  11. kms激活win10
  12. 高性能MySQL读书笔记(一)
  13. ecg-qc实现ECG信号质量评估
  14. 谷歌浏览器任务栏图标变白色解决方法(亲测有效!)
  15. 详解TCP 三次握手和四次挥手
  16. python-OpenCv调用IP摄像头APP
  17. 需要系数 计算机房,计算电流及需要系数表
  18. 随着新日益增多的技术,如何正确的提升自己?
  19. dpdk-16.04 扩展新网卡驱动过程
  20. 总结:对象存储、块存储、文件存储的区别

热门文章

  1. 该不该造自己的轮子?
  2. 内存分析(二) AVFrame
  3. Leetcode 476. Number Complement 补数 解题报告
  4. FindNextFile函数
  5. linux 3.10 gro的理解和改进
  6. RISC-V矢量指令集学习记录
  7. 为何自从熊猫烧香以后中国再也没有爆发过类似于此的大规模网络病毒事件?
  8. 第九届泰迪杯A题(1)
  9. c语言线性表写的数据库系统(数据结构)
  10. 用unity制作2d钟表