近期海投笔试遇到的问题(3)

  1. java基于事件驱动实现的IO多路复用技术:select,pselect,poll,epoll (属于java并发编程)
  2. volatile关键字: 用volatile修饰的变量,就会具有可见性(在 Java 中 volatile、synchronized 和final 实现可见性。);volatile修饰的变量不允许线程内部缓存和重排序,即直接修改内存;在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此volatile变量是一种比sychronized关键字更轻量级的同步机制。
  3. Date类的更新换代:在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理;精确到秒;
  4. final修饰符:final关键字可以用于成员变量、本地变量、方法以及类;final成员变量必须在声明的时候初始化或者在构造器中初始化,否则就会报编译错误;你不能够对final变量再次赋值;本地变量必须在声明时赋值;在匿名类中所有变量都必须是final变量;final方法不能被重写;final类不能被继承;final关键字不同于finally关键字,后者用于异常处理;final关键字容易与finalize()方法搞混,后者是在Object类中定义的方法,是在垃圾回收之前被JVM调用的方法;接口中声明的所有变量本身是final的;final和abstract这两个关键字是反相关的,final类就不可能是abstract的;final方法在编译阶段绑定,称为静态绑定(static binding);没有在声明时初始化final变量的称为空白final变量(blank final variable),它们必须在构造器中初始化,或者调用this()初始化。不这么做的话,编译器会报错“final变量(变量名)需要进行初始化“;将类、方法、变量声明为final能够提高性能,这样JVM就有机会进行估计,然后优化;按照Java代码惯例,final变量就是常量,而且通常常量名要大写;对于集合对象声明为final指的是引用不能被更改,但是你可以向其中增加,删除或者改变内容。
  5. java关键字(易和其他语言混淆,放出来提醒下自己):访问控制:private protected
    public;类,方法和变量修饰符:abstract class extends final
    implements interface native new static strictfp
    synchronized transient volatile; 程序控制:break continue
    return do while if else for instanceof
    switchcase default; 异常处理:try cathc throw
    throws;包相关:import package;基本类型:boolean byte char double
    float int long short null true false;变量引用:super
    this void;保留字:goto const
  6. 关系型数据库:Oracle,SqlServer,Informix,MySql,SyBase
    非关系型数据库: SQLite 、Redis、Tokyo CabinetTokoy Tyrant 、MongoDB、CouchDB 、Cassandra 、Voldemort、LevelDB
  7. java实现包含字母、汉字、标点符号的字符串的截取:
public static String bSubstring(String s, int length) throws Exception
    {

        byte[] bytes = s.getBytes("Unicode");
        int n = 0; // 表示当前的字节数
        int i = 2; // 要截取的字节数,从第3个字节开始 ps:java转换为字节数组,前俩个字节是标志位,所以第0位和第1位是标志位,从2开始
        for (; i < bytes.length && n < length; i++)
        {
            // 奇数位置,如3、5、7等,为UCS2编码中两个字节的第二个字节
            if (i % 2 == 1)
            {
                n++; // 在UCS2第二个字节时n加1
            }
            else
            {
                // 当UCS2编码的第一个字节不等于0时,该UCS2字符为汉字,一个汉字算两个字节
                if (bytes[i] != 0)
                {
                    n++;
                }
            }
        }
        // 如果i为奇数时,处理成偶数
        if (i % 2 == 1)

        {
            // 该UCS2字符是汉字时,去掉这个截一半的汉字
            if (bytes[i - 1] != 0)
                i = i - 1;
            // 该UCS2字符是字母或数字,则保留该字符
            else
                i = i + 1;
        }

        return new String(bytes, 0, i, "Unicode");
    }

8.struct和union大小判断:结构体的总大小为结构体最宽基本类型成员大小的整数倍,结构体变量的首地址能够被其最宽基本类型成员的大小所整除,结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,其中不满足条件时系统进行填充;union的长度取决于其中的长度最大的那个成员变量的长度,同时长度须是成员变量的长度整数倍,union中成员变量是重叠摆放的,其开始地址相同。
9.ping主要是判断网络的连通性,tracert主要是判断网络路径和延时,telnet常用于连接远端设备的端口,检测相关服务是否正常工作,nslookup常用于检查域名解析是否正常
10.公有继承:基类中所有public成员在派生类中为public属性;基类中所有protected成员在派生类中为protected属性;基类中所有private成员在派生类中不可访问。
私有继承:基类中的所有public成员在派生类中为protected属性;基类中的所有protected成员在派生类中为protected属性;基类中的所有private成员在派生类中仍然不可访问。
保护继承:基类中的所有public成员在派生类中均为private属性;基类中的所有protected成员在派生类中均为private属性;基类中的所有private成员在派生类中均不可访问。
11. ACM博弈论:巴什博弈、威佐夫博弈、尼姆博弈

你可能感兴趣的:(工作笔试总结)