面试题_小技巧记录

本文探讨了ConcurrentLinkedQueue的高效使用技巧,避免使用size()方法检查队列空状态,推荐使用isEmpty()方法。此外,深入解析SQL LIKE语句的通配符使用,包括%和_的特殊含义及escape的转义应用。还提到了浏览器乱码解决策略及XML DTD约束技术。

1.优先考虑用isEmpty

       在使用ConcurrentLinkedQueue时,如果涉及到队列是否为空的判断,切记不可使用size() == 0 的做法,因为在size()方法中,是通过遍历整个链来表现的,在队列元素很多的时候,size()方法十分消耗性能和时间,只是单纯的判断队列为空使用isEmpty()即可

2.写sql时需要注意的地方:

        sql like语句中的通配符:百分号、下划线和escape。就像平时用 * 和 ?,sql的like语句中,使用%和_来代表任意多个字符和一个字符

eg. %代表多个字符
        select * from user where username like '%mf%';

       SELECT * FROM Persons WHERE City LIKE 'N%';
        从person表中选取居住在以"N"开始的城市里的人。

       SELECT * FROM Persons WHERE City LIKE '%G’;
      从person表中选取居住在以"G"结尾的城市里的人。

      eg. _ 代表一个字符
     select * from user where username like 'mg_an';

      如果真的要查询%或者_,这时需要使用escape,转义字符后面的%或_就不作为通配符了,注意前面没有转义字符的%和_仍然起通配符。
      select username from user where username like '%xiao/_%' escape '/';
      select username from user where username like '%xiao/%%' escape '/';

3.浏览器出现乱码

        查看HTML文件或者其他文件与浏览器中的编码方式是否一致,

  1.   可以通过改HTML文件或者其他文件的编码方式,与浏览器保持一致
  2.   修改浏览器的编码方式,查看结果是否正确。

4.xml的DTD详解
XML常见的约束技术有:
XML DTD (document type definition 文档类型定义)
XML Schema

       DTD文件一般和XML文件配合使用,主要是为了约束XML文件
如:
?xml version="1.0" encoding="utf-8"?>
<!--引入dtd文件,约束这个xml-->
<!DOCTYPE 班级 SYSTEM "myClass.dtd">
<班级>
    <学生>
        <名字>周小星</名字>    
        <年龄>23</年龄>
        <介绍>学习刻苦</介绍>
    </学生>   
    <学生>
        <名字>林晓</名字> 
        <年龄>25</年龄>
        <介绍>是一个好学生</介绍>
    </学生>   
</班级>
引入中写的:SYSTEM,表示当前的DTD文件是本地的 
如果写的是 PUBLIC,则表示引入的DTD文件是来自于网络的.

5.abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized?
          abstract的method不可以是static的,因为抽象的方法是要被子类实现的,而static与子类扯不上关系

          native方法表示该方法要用另外一种依赖平台的编程语言实现的,不存在被子类实现的问题,所以,它也不能是抽象的,不能与abstract混用。
例如,FileOutputSteam类要硬件打交道,底层的实现用的是操作系统相关的api实现,例如,在windows用c语言实现的,所以,查看jdk 的源代码,可以发现FileOutputStream的open方法的定义如下:

                         private native void open(String name)throws FileNotFoundException;

        如果我们要用java调用别人写的c语言函数,我们是无法直接调用的,我们需要按照java的要求写一个c语言的函数,用这个c语言函数去调用别人的c语言函数。由于我们的c语言函数是按java的要求来写的,我们这个c语言函数就可以与java对接上,java那边的对接方式就是定义出与我们这个c函数相对应的方法,java中对应的方法不需要写具体的代码,但需要在前面声明native。

       synchronized应该是作用在一个具体的方法上才有意义。而且,方法上的synchronized同步所使用的同步锁对象是this,而抽象方法上无法确定this是什么。所以synchronized与abstract是不可以合用的,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值