自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 腾讯面试错题

联合索引和最左前缀联合索引可以看成排好序的数组。排序规则是:先按照第一个列进行排序,第二列再按照第一列排好序的基础上再进行排序,依次类推需要按照最左前缀原则才能生效最左前缀原则:按照最左边的列开始的顺序并且不能跳过其中的列。如:(name, age,position)是一个联合索引,支持(name)(name, age)(name, age,position)查找,不支持( age,position)查找有的时候你没有使用最左前缀原则写sql,优化器可能会帮你进行优化成最左前缀原则,

2021-09-02 00:48:38 82

原创 小米笔试错题

排序算法进程已经获得除CPU以外的所有所需资源的进程处于就绪状态。因为阻塞状态没有获取到IO资源。同一个进程的不同线程,以下不能被共享的是栈递归将递归算法转换为非递归算法, 通常需要使用栈抽象类抽象方法不能有方法体,抽象类里的非抽象方法必须要有方法体 D错类体中只能定义变量和方法,不能有其他语句,所以B项错误选项中的方法和类中的方法重复,所以会发生编译异常,所以C项错误数据类型转换int 四个字节 char 1个字体 int->char 容易丢失信息...

2021-08-30 01:23:11 159

原创 牛客刷题48

序列化把你看得懂的转换为看不懂的,就是序列化。把你看不懂的转换为看得懂的,就是反序列化。编程基础赋值语句,不能用逗号分隔。调用构造方法要用this.xxx()访问权限私有方法只能在本类中可见,不能继承缺省访问修饰符只在本包中可见,其他包不可见保护修饰符继承自该类的子类都能访问,可被继承覆盖static修饰的成员属于类成员,父类字段或方法只能被子类同名字段或方法遮蔽,不能被继承覆盖...

2021-07-11 23:49:26 84

原创 牛客刷题47

数据类型转换byte-short-int-long-float-doubleint先转换成float,所以结果为浮点数boolean类型不能和任何类型进行转换,会报出类型异常错误long和float,正常定义需要加l和f,但是long和float属于基本类型,会进行转化,所以不会报出异常调用构造方法this的一个作用就是在一个构造方法中调用另一个构造方法,格式为this(参数);super是调用父类的方法;A(a)这种形式是在new一个类时使用。接口接口中只有常量定义,没有变量声明。t

2021-07-07 17:31:10 64

原创 牛客刷题46

匿名内部类java多线程中实现多线程的方式有两种①extends Thread ②implements Runnable。这两种情况是我们最常见的,还有一种是由第二种变形而来的直接new Runnable(){},我们都知道java的接口是不可以实例化的,但代码中的new Runnable(){xxx}确是实例化了,为什么? 接口和抽象类不可以实例化是对的,这个是java语法规范来的,而new Runnable(){}其实不是实例化Runnable接口来的,实际上一种内部类的一种简写 在这里:①首先构造

2021-07-06 17:58:36 51

原创 牛客刷题45

instanceofinstanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例,而Object是所有类的父类。标识符字母指大小写英文字母、下划线(_)和美元符号($),也可以是Unicode字符集中的字符,如汉字注释嵌套Java中规定,多行注释可以嵌套单行注释,但是不能嵌套多行注释。nativenative是由调用本地方法库(如操作系统底层函数),可以由C,C++实现数组数组长度不能定义在左边,要定义在等号右边...

2021-07-01 23:03:27 57

原创 牛客刷题44

Map和Collection接口中的变量接口里的变量默认是public static final 的,是公共的,静态的,最终的.相当于全局常量,可以省略修饰符。实现类可以直接访问接口中的变量String引用可变对象本身不变,只是引用变了类成员变量在实例方法中可以用this.调用,静态方法中不能用this.调用线程线程中是顺序执行的,sl.printAll();在前三句执行之后执行,也就必有(连续或非连续的)ABC。线程之间是穿插执行的,一个线程执行 sl.printAll();之前可能

2021-06-30 16:54:24 54

原创 牛客刷题43

自动类型转换char 2字节 short 2字节 float 4字节 double 8字节往精度高的转成员变量和局部变量定义在类中的变量是成员变量,可以不进行初始化,会自动初始化,引用类型默认初始化为null,基本类型int则会默认初始化为0局部变量是定义在方法中的变量,必须要进行初始化,否则不同通过编译Java程序内存泄露java是自动管理内存的,通常情况下程序运行到稳定状态,内存大小也达到一个 基本稳定的值但是内存泄露导致Gc不能回收泄露的垃圾,内存不断变大.最终超出内存界限,抛出Ou

2021-06-29 16:25:06 55

原创 牛客刷题42

作用域虚拟机和泛型创建泛型对象的时候,一定要指出类型变量T的具体类型。争取让编译器检查出错误,而不是留给JVM运行的时候抛出类不匹配的异常。在编译阶段会采取擦除机制,将所有的泛型都编译成为原生类型List,因为虚拟机中没有泛型,只有普通类和普通方法。注解1.Java三大注解:@Override @Deprecated @Suppresswarnings2.@Override 注解表名子类中覆盖了超类中的某个方法,如果写错了覆盖形式,编译器会报错3.@Deprecated 表明不希望别人在以后

2021-06-28 16:20:09 49

原创 牛客刷题41

javadocjavadoc 用来识别注释javac 用来识别代码二者互不影响不可变类不可变类(Immutable Class)是一旦被实例化就不会改变自身状态(或值)的类。不可变类的主要用途是在多线程环境下确保对象的线程安全。例如String和基本数据类型的包装类JDBC桥接模式:定义 :将抽象部分与它的实现部分分离,使它们都可以独立地变化。意图 :将抽象与实现解耦。JDBC连接 数据库 的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不动,原因就是JDBC提供了

2021-06-25 16:10:09 45

原创 牛客刷题39

多重catch块多重catch块的顺序问题,由于异常处理系统就近寻找匹配异常处理程序,应先子类后父类。后端获取数据向前端输出的过程中,输出前应该采用信息安全部发布的XSSFilter进行相应编码。Servlet类Servlet是线程不安全的,在Servlet类中可能会定义共享的类变量,这样在并发的多线程访问的情况下,不同的线程对成员变量的修改会引发错误。getXXX()方法getParameter()是获取POST/GET传递的参数值;getInitParameter获取Tomcat的ser

2021-06-24 16:37:50 57

原创 牛客刷题40

线程可见性,是指线程之间的,一个线程修改的状态对另一个线程是可见的。也就是一个线程修改的结果。另一个线程马上就能看到。比如:用volatile修饰的变量,就会具有可见性。原子是最小单位,具有不可分割性。比如 a=0;(a非long和double类型) 这个操作是不可分割的,那么我们说这个操作时原子操作。再比如:a++; 这个操作实际是a = a + 1;是可分割的,所以他不是一个原子操作。非原子操作都会存在线程安全问题,需要我们使用同步技术(sychronized)来让它变成一个原子操作。run()、

2021-06-24 16:37:23 53

原创 牛客刷题38

父子类如果父类中只有有参构造函数,则子类构造函数必须调用。实现接口重写接口中的方法,访问权限一定是public多态问题多态问题中,无论向上或向下转型,都记住一句话就可以了。编译看左边,运行看右边。意思编译时候,看左边有没有该方法,运行的时候结果看 new 的对象是谁,就调用的谁。二维数组二维数组定义,一维长度必须定义,二维可以后续定义...

2021-06-23 15:51:35 59

原创 牛客刷题37

AppletApplet 是一种在 Web 环境下,运行于客户端的Java程序组件。Applet 必须运行于某个特定的“容器”,这个容器可以是浏览器本身,也可以是通过各种插件,或者包括支持 Applet 的移动设备在内的其他各种程序来运行。与一般的Java应用程序不同,Applet 不是通过 main 方法来运行的。Applet运行之前,先调用 Init() 方法,然后调用 start() 方法,最后调用 paint() 方法。Java编译编译器将Java源代码编译成字节码class文件类加载到JV

2021-06-22 15:41:48 126

原创 牛客刷题36

静态方法不能在静态方法中调用this.method(),因为对象可能还没有被创建;可以调用其他类的静态方法,用类名.静态方法名调用可以调用实例方法,new一个对象,用new.对象名().实例方法名调用构造方法调用在类的其他构造方法中可以用this()的方式调用其他构造方法;在类的子类中则可以通过super调用父类中指定的构造方法;在反射中可以使用newInstance()的方式调用。list.方法静态变量Java中静态变量只能在类主体中定义,不能在方法中定义。 静态变量属于类所有而

2021-06-21 15:52:12 61

原创 牛客刷题35

static属性该题主要考察的是static属性和i++操作。因为i是static的,是类属性,所以不管有多少对象,都共用的一个变量。这里getNext()方法被调用了三次,所以进行了三次i++操作。但是由于getNext()操作的返回是:return i++; i++是先返回,后++,所以在println是,已经返回了i(此时i为3),再进行自增的,所以这里结果为3i=i++上面的回答都没说明白为什么会这样,首先运行这个程序,在c/c++和java会发现不一样,在c/c++中答案是1,在java

2021-06-20 23:25:32 52

原创 牛客刷题34

数组复制的效率复制的效率System.arraycopy>clone>Arrays.copyOf>for循环,这个有兴趣自己测试一下就知道了。这里面在System类源码中给出了arraycopy的方法,是native方法,也就是本地方法,肯定是最快的。而Arrays.copyOf(注意是Arrays类,不是Array)的实现,在源码中是调用System.copyOf的,多了一个步骤,肯定就不是最快的。前面几个说System.copyOf的不要看,System类底层根本没有这个方法,自己看

2021-06-18 16:26:41 81

原创 牛客刷题33

冒泡排序冒泡排序:将最大值放到末尾,一直缩小范围到第一位RMIRMI采用的是TCP/IP协议创建并启动线程线程第一点是run与start方法区别,调用run时只是单纯执行方法,故按代码顺序执行下来结果就是SogouHello。接着我们再来看看把run换成start,结果是HelloSogou,这是为什么呢。首先调用start是开始了一个线程,那么现在程序中有了两个线程主线程main和线程T。这就涉及本题第二个知识点了,函数使用的锁是this(即对象本身),若函数被static修饰则锁为

2021-06-17 10:14:38 101

原创 牛客刷题32

父类子类基类和导出类在 《Think in java》 中文翻译是 《java编程思想》 第四版 里有这个概念。基类就是父类,导出类就是子类。子类调用父类构造方法用super()关键字,且放在子类构造函数的第一行。常数'a’是个常数,不能赋值socket编程getInetAddress获取主机名和IP地址getLocalAddress()顾名思义,获取本地IP地址getReuseAddress()返回布尔类型,表示复用地址getLocalPort()API 的说明:“Returns th

2021-06-16 18:57:46 86

原创 牛客刷题31

默认类型整数类型 默认为 int带小数的默认为 double正则表达式\d 说明是digit数字\w说明是word单词面向对象五大基本原则单一职责原则(SRP)开放封闭原则(OCP)里氏替换原则(LSP)依赖倒置原则(DIP)接口隔离原则(ISP)线程并发假设两线程为A、B,设有3种情况:1.AB不并发:此时相当于两个方法顺序执行。A执行完后a=-1,B使用-1作为a的初值,B执行完后a=-22.AB完全并发:此时读写冲突,相当于只有一个线程对a的读写最终生效。相同于方法只执行

2021-06-15 10:31:01 1230 3

原创 牛客刷题30

Hibernateload方法来得到一个对象时,此时hibernate会使用延迟加载的机制来加载这个对象,即:当 我们使用session.load()方法来加载一个对象时,此时并不会发出sql语句,当前得到的这个对象其实是一个***对象,这个***对象只保存了实 体对象的id值,只有当我们要使用这个对象,得到其它属性时,这个时候才会发出sql语句,从数据库中去查询我们的对象。相对于load的延迟加载方式,get就直接的多,当我们使用session.get()方法来得到一个对象时,不管我们使不使用这个对象

2021-06-14 16:22:25 31

原创 牛客刷题29

类方法在类方法中不能有this关键字,直接调用类方法即可引用类型string和char数组都是引用类型,引用类型是传地址的,会影响原变量的值,但是string是特殊引用类型,为什么呢?因为string类型的值是不可变的,为了考虑一些内存,安全等综合原因,把它设置成不可变的; 不可变是怎么实现的?Java在内存中专门为string开辟了一个字符串常量池,用来锁定数据不被篡改,所以题目中函数中的str变量和原来的str已经不是一个东西了,它是一个局部引用,指向一个testok的字符串,随着函数结束,它也就

2021-06-12 19:51:11 42

原创 牛客刷题28

接口接口的方法都是 public abstract 变量都是public static final的 ,方法只能通过接口调用,不能通过实现类调用AOP和OOPAOP 和 OOP的区别:面向方面编程 AOP 偏重业务处理过程的某个步骤或阶段,强调降低模块之间的耦合度,使代码拥有更好的移植性。面向对象编程 (oop) 则是对业务分析中抽取的实体进行方法和属性的封装。也可以说 AOP 是面向业务中的动词领域, OOP 面向名词领域。AOP 的一个很重要的特点是源代码无关性,也就是说如果我们的系统中

2021-06-11 10:28:01 1054 1

原创 牛客刷题27

数据域数据域,也就是个成员变量(类的属性)Java工具javac编译。javah生成c++头文档。javadoc生成解释API文档。jar,打包。构造函数构造方法就是:public 类名, 没有方法修饰符所以 (1) 处就是一个普通方法所以该类没有带参数构造方法 ,编译报错非静态方法非静态成员只能被类的实例化对象引用,因此这里在静态方法中访问x会造成编译出错反射普通的java对象是通过new关键字把对应类的字节码文件加载到内存,然后创建该对象的。反射是通过一个名为Class的特殊类

2021-06-10 16:10:56 44

原创 牛客刷题26

访问范围数组Java中数组是对象,不是基本数据类型(原生类),大小不可变且连续存储,因为是对象所以存在堆中。抽象方法接口方法默认是public abstract的,且实现该接口的类中对应的方法的可见性不能小于接口方法的可见性,因此也只能是public的。数组remove()每次remove 之后 数组的长度会-1 但是获取数据的下标会+1运算符号&按位与|按位或~取反^异或声明修饰符default不能修饰变量Native可以和其他一些修饰符连用,但是abstract

2021-06-09 16:15:30 38

原创 牛客刷题25

构造方法一个类可以有多个构造方法,多个构造方法通过不同参数列表进行重载。异常处理Java异常都继承自类Throwable,Throwable子类有Error和Exception,其中Exception又分为运行时异常和编译时异常。编译时异常是未雨绸缪性质的异常,是防范,需要显示处理。运行时异常是程序员问题造成,并不强制进行显示处理。JSP分页先取总记录数,得到总页数,再取所有的记录,最后显示本页的数据父类方法调用在调用子类构造器之前,会先调用父类构造器,当子类构造器中没有使用"super(参数

2021-06-08 10:07:26 86

原创 牛客刷题24

JVM1、jps:查看本机java进程信息。2、jstack:打印线程的栈信息,制作线程dump文件。3、jmap:打印内存映射,制作堆dump文件4、jstat:性能监控工具5、jhat:内存分析工具6、jconsole:简易的可视化控制台7、jvisualvm:功能强大的控制台String首先说下String确实是个不可变对象,这个不可变是JDK特有的,写JAVA的人特意针对的但是这与本题无关,题目中的形参str只是原引用ex.str的一个引用副本,传的是一个副本地址值,这个值与ex

2021-06-07 16:03:20 37

原创 牛客刷题23

– ++c=a—bd=a—b自减操作都在语句执行后进行同步执行首先jvm中没有进程的概念 ,但是jvm中的线程映射为操作系统中的进程,对应关系为1:1。那这道题的问的就是jvm中线程如何同步执行 。 在jvm中 是使用监视器锁来实现不同线程的同步执行, 在语法的表现就是synchronized 。匿名内部类由于构造器的名字必须与类名相同,而匿名类没有类名,所以匿名类不能有构造器。...

2021-06-04 16:30:57 83 1

原创 牛客刷题22

执行顺序其中涉及:静态初始化代码块、构造代码块、构造方法当涉及到继承时,按照如下顺序执行:1、执行父类的静态代码块static {System.out.println(“static A”);}输出:static A2、执行子类的静态代码块static {System.out.println(“static B”);}输出:static B3、执行父类的构造代码块{System.out.println(“I’m A class”);}输出:I’m A class4、执行父

2021-06-03 16:07:40 51

原创 牛客刷题21

初始化问题成员变量为int类型可以不初始化,默认值为0局部变量为int类型必须初始化,没有默认值基本单元java的基本编程单元是类,基本存储单元是变量。时间复杂度初始条件是x=2,循环终止的条件是x>=n/2,执行一次循环,x就乘以2,所以执行t次循环后,x的值为2的t+1次方,若此时达到终止条件,则2的t+1次方=n/2。SSH MVCMVC 的处理过程:首先控制器接受用户的请求,调用相应的模型来进行业务处理,并返回数据给控制器。控制器调用相应的视图来显示处理的结果,并通过视图呈现给

2021-06-02 16:36:45 48

原创 牛客刷题20

运算顺序boolean b=true?false:true==true?false:true;System.out.println(b);== 优先级高于 三目运算符,先判断 true == true,此时返回为 true,这时表达式为 boolean b = true?false:true?false:true此时三目运算符从右向左执行,true?false:true,返回false这时表达式为 boolean b = true?false:false;结果为:boolean

2021-06-01 10:53:08 128

原创 牛客刷题19

事务隔离实现在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别;为了解决更新丢失,脏读,不可重读(包括虚读和幻读)等问题在标准SQL规范中,定义了4个事务隔离级别,分别为未授权读取,也称为读未提交(read uncommitted);授权读取,也称为读提交(read committed);可重复读取(repeatable read);序列化(serializable).类变量因为x的 修饰符为 static 所以x为类变量,即对于所有的实例来说,他们访问的x为同一个x,类变量存储在方

2021-05-31 11:09:40 43

原创 牛客刷题18

构造方法A一个类有多个构造方法便是重载的表现。重载参数列表不同。所以A是正确的。B构造方法是在对象创建时就被调用,用于初始化。C构造方法是给与之对应的对象进行初始化,初始化的动作只执行一次。D构造方法必须与所在类的名称同名。JVM内存区域Java标识符Java标识符命名规范是:1)只能包含字母a-zA-Z,数字0-9,下划线_和美元符号$;2)首字母不能为数字;3)关键字和保留字不能作为标识符。null是关键字,NULL不是关键字,java区分大小写。这题答案D是对的,但C是错的,f

2021-05-27 17:12:53 66

原创 牛客刷题17

修饰符static表示静态变量,归类所有,该类的所有对象公用解决哈希冲突以上方法都是解决哈希填冲突的策略,但是在java.util.HashMap中,总体来说是使用的链地址法来解决冲突的。当然了,使用链地址***导致get的效率从o(1)降至o(n),所以在Java8中,使用的是平衡树来解决提高效率的。类型强制转换被final修饰的变量是常量,这里的b6=b4+b5可以看成是b6=10;在编译时就已经变为b6=10了而b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进

2021-05-26 10:39:46 47

原创 牛客刷题16

面向对象Java是纯粹的面向对象语言,所有的方法都必须存在于类中。类才有封装,继承,多态的特性。 在一些非纯粹的面向对象语言中,如PHP,定义的方法是可以脱离类而单独存在的。 <?php function a(){ echo “hello world”; } a(); >父子类子类构造函数调用父类构造函数用super子类重写父类方法后,若想调用父类中被重写的方法,用super未被重写的方法可以直接调用。运行时异常运行时异常故名思议就是程序在运行的时候出现异常,隐含的一个前提就是

2021-05-25 16:02:45 55

转载 牛客刷题15

IO流io流方面的知识:要将文件中一个字符写入另一个文件首先要读入(fileinputStream)到内存中去,然后在读出(fileoutputStream)子类与父类一个java文件里,public 的类只能出现一个,只能出现一个,只能出现一个,否则,不管你用哪一个类名命名文件名编译器都会报错关于多态。子类继承了父类的所有成员,包括private权限的成员变量,但是继承的子类具有私有变量的拥有权但是没有使用权。private的成员变量,根据权限修饰符的访问控制范围,只有在类内部才能被访问,就算

2021-05-24 17:37:44 43

原创 牛客刷题14

基本类型数据封装依靠包装类java的数据类型分为两大类:基本类型和引用类型;基本类型只能保存一些常量数据,引用类型除了可以保存数据,还能提供操作这些数据的功能;为了操作基本类型的数据,java也对它们进行了封装, 得到八个类,就是java中的基本类型的封装类;他们分别是:八种基本类型: byte short int long float double char boolean对应的包装类 : Byte Short Integer Long Float Double Char

2021-05-23 18:29:10 83

原创 牛客刷题13

反射反射机制:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性反射破坏代码的封装性,破坏原有的访问修饰符访问限制抽象类抽象类的方法都是抽象方法。× 只要有一个抽象方法的类就是抽象类。一个类可以继承多个抽象类。 × 一个类只能继承一个类,可以实现多个接口。抽象类不能有构造方法。 × 类都有构造方法,但是不能new。类成员属性加入这个空格是放在“Test t = new Test();”的下一行,那么:1、f 虽然是 Tes

2021-05-21 21:42:46 57

原创 牛客刷题12

ServletServletContext对象:servlet容器在启动时会加载web应用,并为每个web应用创建唯一的servlet context对象,可以把ServletContext看成是一个Web应用的服务器端组件的共享内存,在ServletContext中可以存放共享数据。ServletContext对象是真正的一个全局对象,凡是web容器中的Servlet都可以访问。整个web应用只有唯一的一个ServletContext对象servletConfig对象:用于封装servlet的配置信

2021-05-20 16:42:30 66

原创 牛客刷题11

javac参数-d destination 目的地-s source 起源地javac -d 指定放置生成的类文件的位置javac -s 指定放置生成的源文件的位置while表达式判断这个题主要考while()中表达式的判断,在C语言中大于0的int值都会被认为是true,而java中没有这个机制,必须是boolean类型的。java跨平台特性Java的跨平台特性是因为JVM的存在, 它可以执行.class字节码文件,而不是.java源代码方法重载和重写方法重载:同一类中的相同的方法名

2021-05-19 16:24:01 46

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除