此博文旨在搜集一些JavaSE基础部分的经典面试题,希望能达到一针见血,通过面试题来达到让大家记忆深刻的目的。
答:属性的default默认值都不是必须的。若不指定默认值,使用该注解时每个属性都必填,所以一般建议给默认值
**只有你的属性叫“value()”,并且使用时只给他一个赋值的时候是可以省略的~~~**
,其余情况均不能省略
// 代码方法内部定义的变量互不干扰,有很好的隔离效果
要点:答出重写HashCode不能改变==是至少的要求
下面编译报错吗?不抱错会输出什么呢?
那为什么我们平时不需要自己手动去关闭呢?请回答
比如上面的例子。如果是包装类型,千万不要简单的用if(b == true)来判断
原因(第一题为例):第一个i++是先用i的值,所以表达式取值1,最后i的值变为了2。到第二个++i时,表达式取值为3了。所以最终为1-3 = -2
(1)依赖管理,节省空间
(2)一键构建 编码 编译 测试(junit) 运行 打包 部署
(3)应用于大型项目 可以提高开发效率
编译 测试 运行 打包
2、**优先声明原则:**当出现路径长短相同的时候,谁先声明就用谁。如F1和F2的路径距离相同,但是由于F1比F2先声明(B比C先声明),所以最终使用F1。
优先声明的解释:如果你是在自己的pom里书写(并不是间接依赖进来的),那么下面的版本号是会覆盖上面的
怎么解释最近依赖原则?怎么解释同路径长度的依赖呢?
这里面我推荐这篇文章来解答:maven资源文件的相关配置
directory:属性指定资源文件放置的目录。 includes:包含哪些配置文件(.class文件不用写) 填充includes指定文件里的${xxxx}占位符(若不做环境区分,一般就是false即可)
maven的scope决定依赖的包是否加入本工程的classpath
下,下面一幅图就能看懂
optional与scope区别在于:仅限制依赖包的传递性,不影响依赖包的classpath
数据元素相互之间的关系称为结构。有四类基本结构:集合、线性结构、树形结构、图状结构;Java中有几种常用的数据结构,主要分为Collection和Map两个主要接口,而程序中最终使用的数据结构是继承自这些接口的数据结构类
数组、链表、红黑树、哈希表等
如果两个输入串的hash函数的值一样,则称这两个串是一个碰撞(Collision)。既然是把任意长度的字符串变成固定长度的字符串,所以必有一个输出串对应无穷多个输入串,碰撞是必然存在的。
通常有两类方法处理碰撞:开放寻址(Open Addressing)法和链接(Chaining)法。前者是将所有结点均存放在散列表T[0…m-1]中;后者通常是把散列到同一槽中的所有元素放在一个链表中,而将此链表的头指针放在散列表T[0…m-1]中。显然HashMap采用链表法
(据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。)
集群主要分成三大类( 高可用集群, 负载均衡集群,科学计算集群)
集群是个物理形态,分布式是个工作方式。
1、只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道;一个程序或系统,只要运行在不同的机器上,就可以叫分布式
2、集群可能运行着一个或多个分布式系统,也可能根本没有运行分布式系统;分布式系统可能运行在一个集群上,也可能运行在不属于一个集群的多台(2台也算多台)机器上。
3、分布式是相对中心化而来,强调的是任务在多个物理隔离的节点上进行。中心化带来的主要问题是可靠性,若中心节点宕机则整个系统不可用,分布式除了解决部分中心化问题,也倾向于分散负载,但分布式会带来很多的其他问题,最主要的就是一致性。
4、分布式:一个业务分拆多个子业务,部署在不同的服务器上(集群是解决高可用的)
5、集群:同一个业务,部署在多个服务器上(分布式是解决高性能、高并发的)
通过面试题来看,可以看出目前互联网公司面试考点为:
1.性能调优、算法数据机构
2.高并发下数据安全、接口冪等性、原子性等
3.分布式下协同、已经锁的处理
4.数据库的分库分表、项目之间的垂直拆分
出现频率高的技术点有:
JAVA是采用Unicode编码。每一个字节占8位。你电脑系统应该是 32位系统,这样每个int就是 4个字节 其中一个字节由8个二进制位组成
返回null的情况有两种,请分别说出
怎么证明int是32位的? Long的十进制最多多少位呢?(正数19位,负数20位,因为符号也是个字符)
贴源码,一切尽在不言中
//valueOf 返回的包装类型 我们发现valueOf方法是有缓存的,因此效率高。如果需要转化的是字符串,会先调用parseInt方法 {"较为复杂的代码"}
要求流水号有规律,但是又不能完全有规律,且应该包含一些有用信息,且要求效率高
问题:有一串数字3495743,怎么样可以快速的萃取出最后面指定位数的数字?请书写一个函数实现。(提示:使用按位与 & 的语法)
答案:由于JVM存在编译期优化,对于两个直接双引号声明的String的+操作,JVM在编译期会直接优化为“计算机软件”一个字符串。同String a = “计算机软件”,效果是一样的。
字面量是会直接放在String pool中的,其他的你可以通过intern自己放入
1、User和Daemon两者几乎没有区别,唯一的不同之处就在于虚拟机的离开(但凡只要还有一个User线程在运行,守护线程就不会退出)
3、在Daemon线程中产生新的线程也是守护线程
如你可以线程池中自定义ThreadFactory,然后t.setDaemon(true);那么线程池中所有的线程都是守护线程了。也就不用显示调用pool.shutdown();才能关闭线程池了,自己就会结束了
4、不要认为所有的应用都可以分配给Daemon来进行服务,比如读写操作或者计算逻辑(因为这样的话,主线程在推出之前,无法知道守护线程是否已经完成读写任务)
守护线程–也称“服务线程”,在没有用户线程可服务时会自动离开。
getName()返回的是虚拟机里面的class的表示,而getCanonicalName()返回的是更容易理解的表示。其实对于大部分class来说这两个方法没有什么不同的。但是对于array或内部类来说是有区别的。
这里面主要考的是JavaEE的基本功眨不扎实,能不能运用自如
System.exit(int)
已退出程序。 exit是带参函数 ;若该语句在异常语句之后,finally会执行
如果try语句里有return,返回的是try语句块中变量值。 详细执行过程如下:
5. 如果有返回值,就把返回值保存到局部变量中;
7. 执行完finally语句后,返回之前保存在局部变量表里的值。
所以如下返回结果,一目了然吧:
Java 程序在执行子类的构造方法之前,如果没有用 super() 来调用父类特定的构造方法,则会调用父类中“没有参数的构造方法”
。因此,如果父类中只定义了有参数的构造方法,而在子类的构造方法中又没有用 super() 来调用父类中特定的构造方法,则编译时将发生错误,
因为 Java 程序在父类中找不到没有参数的构造方法可供执行。解决办法是在父类里加上一个不做事且没有参数的构造方法,,所以上面可以两种方法解决编译报错:
2、显示调用父类无参构造
1 形式上: 字符常量是单引号
引起的一个字符 字符串常量是双引号
引起的若干个字符
2 含义上: 字符常量相当于一个**整形值( ASCII 值),**可以参加表达式运算 字符串常量代表一个地址值(该字符串在内存中存放位置)
3 占内存大小 字符常量只占2个字节
字符串常量占若干个字节(至少一个字符结束标志) (注意: char在Java中占两个字节)
这样编译不为null,感觉i可议赋值为null一样。但是运行时报错:
比如常见的从MyBatis查出来的数据,类型匹配出错~~
IFNULL
函数(注意:上面count用IFNULL函数无效) 如:
往常我经常会看到一些所谓的优化建议不使用Count(* )
而是使用Count(1)
,从而可以提升性能,给出的理由是Count( *)会带来全表扫描。而实际上如何写Count并没有区别。
Count(1)和Count(*)实际上的意思是,评估Count()中的表达式是否为NULL,如果为NULL则不计数,而非NULL则会计数。比如我们看代码1所示,在Count中指定NULL(优化器不允许显式指定NULL,因此需要赋值给变量才能指定)
对于Count(列)来说,同样适用于上面规则
使用http://localhost/reportserver查看时可以正常运行的,但是在报表管理器查看就会出现这个错误,求大神帮忙解答,急~~~~~~~~~
项目跑成功了,打开后进入一个activity时出问题,崩溃,报错
可以将问题定位在XML文件出了问题。
出错误的地方大概率是下面几种情况,可以根据错误日志进行排查。
我的问题出在资源引用错误,第四条,接下来是我按照日志排查的过程。
第一个错误集中处并没有发现什么非常有用的信息,先向下面检索
第二个错误提示处发现了和一开始的错误提示有区别
,然后就需要打起精神了
定位问题,出在color资源的引用上,是因为它并不是被需要的一个drawable类型。
找到源文件中引用这个资源的代码,锁定出问题的地方,将这句话删掉后,问题解决
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。