• 厦门亿联2018面试题


    一、选择器

    public class EqTest {
    	public static void main(String[] args) {
    		EqTest e = new EqTest();
    	}
    
    	public EqTest() {
    		String s = "Java";
    		String s2 = "java";
    //		if (s.equalsIgnoreCase(s2))
    		 {
    			System.out.println("相等");
    		} else {
    			System.out.println("不相等");
    		}
    	}
    }
    

      在上面的java代码的注释行位置,放置(C)测试代码能输出“相等”的结果(单选)
    C:if (s.equalsIgnoreCase(s2))

    2.研究下马的java代码:

    public class TestException {
    	public static void main(String[] args) {
    		int n[] = {
    				0, 1, 2, 3, 4
    		};
    		int sum = 0;
    		try {
    			for (int i = 1; i < 6; i++) {
    				sum = sum + n[i];
    			}
    			System.out.println("sum+" + sum);
    		} catch (ArrayIndexOutOfBoundsException e) {
    			System.out.println("数组越界");
    		} finally {
    			System.out.println("程序结束");
    		}
    	}
    }
    

    输出结果是(C);

    结果:数组越界 程序结束

    3.考虑下列java代码:

    public class A {
    	public static void main(String[] args) {
    		try {
    			System.out.println("HelloWorld!");
    		}
    	}
    }
    

    程序报的错为:Syntax error, insert "Finally" to complete BlockStatements

    其中错误的是A)。(单选)
    A:没有catch和finally块   B:没有抛出异常的代码不能出现在try代码块内
    C:如果没有catch块而使用try,main()会总是抛职异常   D:class A 没有throws IOException

    try要一个catch或者finally
    4.研究下面的java代码:

    		switch (x) {
    		case 1:
    			System.out.println(1);
    		case 2:
    		case 3:
    			System.out.println(3);
    		case 4:
    			System.out.println(4);
    		}
    
    

    当x=2;时,运行结果是(C)。(单选)
    C:单选结果是3和4

    5.在java中,关键字(A)使类不能派生出子类(单选)
    A:final

    我的博客关于关键字http://www.cnblogs.com/yangliguo/p/7477296.html

    6.下面关于servlet的陈述正确的是:(B C
    A:我们在浏览器的地址栏直接输入要请求的Servlet,该servlet默认会使用doPost方法处理请求
    B:servlet运行在服务端
    C:servlet的生命周期包括:实例化,初始化,服务,破坏,不可以用
    D:servlet不能向浏览器发送Html标签

    注:Servlet生命周期分为三个阶段:
      1、初始化阶段 , 调用init()方法;
      2、响应客户请求阶段, 调用service()方法;
      3、终止阶段, 调用destroy()方法。

    7.在JAVA编程中,以下(B)命令能将java源文件转换为类文件。(单选)
    A:appletviewer(小程序浏览器)  B:javac
    C:java      D:以上所有选项都不正确

    javac是JDK的标准编译工具,常见的形式为:javac <选项<源文件>。它可能的选项包括:

    • -g:生成所有调试信息。

    • -g:none:生成无调试信息。

    • -g:{lines,vars,source}:生成只有部分调试信息。

    • -nowarn:生成无警告。

    • -verbose:输出关于编译器正在做的信息。

    • -deprecation:输出使用了不鼓励使用的API的源程序位置。

    • -classpath <路径>:指定用户类文件的位置。

    • -sourcepath <路径>:指定输入源文件的位置。

    • -bootclasspath <路径>:覆盖自举类文件的位置。

    • -extdirs <目录(多个)>:覆盖安装的扩展类的位置。

    • -d <目录>:指定输出类文件的位置。

    • -encoding <编码>:指定源文件中所用的字符集编码。

    • -target <版本>:生成指定虚拟机版本的类文件。

    java命令是JDK默认的java执行程序,在这里值得注意的是在执行带包的.class文件时,需要使用标准的Java包形式。

    Windows下文件名为jar.exe,Linux下文件名为jar。它的运行需要用到JDK安装目录下lib目录中的tools.jar文件。jar命令行格式为:

    jar {ctxu}[vfm0M] [jar-文件] [manifest-文件] [-C 目录] 文件名

    其中{ctxu}是jar命令的子命令,每次jar命令只能包含一个子命令,这些子命令含义如下。

    • -c:创建新的JAR文件包。

    • -t:列出JAR文件包的内容列表。

    • -x:展开JAR文件包的指定文件或者所有文件。

    • -u:更新已存在的JAR文件包(添加文件到JAR文件包中)。

    [vfm0M]中的选项可以任选,也可以不选,它们是jar命令的选项参数。

    • -v:生成具体报告并打印到标准输出。

    • -f:指定JAR文件名,通常这个参数是必须的。

    • -m:指定需要包含的MANIFEST清单文件。

    • -0:只存储,不压缩,这样产生的JAR文件包会比不用该参数产生的体积大,但速度更快。

    • -M:不产生所有项的清单(MANIFEST〕文件,此参数会忽略-m参数。

    8.下面对http请求消息使用Get和Post方法陈述正确的是:(B C
    A:post方法提交信息可以保存为书签,而get则不行
    B:可以使用GET方法提交敏感数据
    C:使用POST提交数据量没有限制
    D:使用post方法提交数据比get方法快

    注:

    • A错,说的刚好相反
    • 可以使用GET方法提交敏感数据,但不安全,所以不建议
    • GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据
    • post方法提交数据比get方法慢
      GET的优点:
      1.执行效率比POST高。
      2.可以通过url传递数据,查找数据的时候就会体现到它的好处。
      GET的缺点:
      1.安全性很低,因为上传的数据都会显示在url上,所以一般用在上传无关紧要的数据上。
      2.上传的数据量较小,一般不能超过4K.这也是因为url的长度而被限制的。

    POST优点:
    1.安全性高,但是也不是很高,如果想要高安全性的话就用https传输协议。
    2.上传的数据量比GET大得多。“理论上讲,POST是没有大小限制的,HTTP协议规范也没有进行大小限制,说“POST数据量存在 80K/100K的大小限制”是不准确的,POST数据是没有限制的,起限制作用的是服务器的处理程序的处理能力。”

    POST缺点:
    1.执行效率比GET低,但是现在的计算机都很强大,这些几乎可以忽略不计,所以建议一般都使用POST方式。
    2.不可以通过url传递数据,有时候可能会不方便.

    9.在web应用程序中web.xml配置类Servlet的信息,如果你的项目为LoginDemo,那么最可能位于哪个目录下(D
    A:LoginDemo/   B:LoginDemo/src
    C:LoginDemo/WEB-INF/bin/  D:LoginDemo/WEB-INF/

    注:web.xml文件是用来初始化配置信息,web.xml是放置在WEB-INF目录中
    (1)/WEB-INF/web.xml 是部署描述文件
    (2)/WEB-INF/classes 用来放置应用程序用到的自定义类(.class),必须包括包(package)结构。
    (3)/WEB-INF/lib 用来放置应用程序用到的JAR文件。

    10.jsp在转移阶段生成文件的扩张名是(A,B
    A:class  B:java
    C:exe    C:bin

    注:web容器处理JSP文件请求的三个阶段
    翻译阶段:这一个阶段,编写好的jsp文件首先被web容器中的jp引擎转换成java源代码
    编译阶段:jsp文件所翻译的java源代码会被编译成可执行的字节码
    请求阶段:当容器接受了客户端请求之后,就执行jsp编译的字节码文件,处理完成请求之后,容器再把生成的页面反馈给客户端显示。

    简答题

    1.String和StringBuder,stringbuff的区别?

    对字符串操作三者在执行速度方面的比较

      StringBuilder StringBuffer String

      String <(StringBuffer,StringBuilder)的原因

        String:字符串常量

        StringBuffer:字符创变量

        StringBuilder:字符创变量

        从上面的名字可以看到,String是“字符创常量”,也就是不可改变的对象。

    String s = "abcd";
    s = s+1;
    System.out.print(s);// result : abcd1
    

     JVM是这样解析这段代码的:首先创建对象s,赋予一个abcd,然后再创建一个新的对象s用来;执行第二行代码,也就是说我们之前对象s并没有变化,所以我们说String类型是不可改变的对象了,由于这种机制,每当用String操作字符串时,实际上是在不断的创建新的对象,而原来的对象就会变为垃圾被GC回收掉,可想而知这样执行效率会有多底。

     而StringBuffer与StringBuilder就不一样了,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,这样就不会像String一样创建一些而外的对象进行操作了,当然速度就快了。

    StringBuilder:线程非安全的

      StringBuffer:线程安全的

      当我们在字符串缓冲去被多个线程使用是,JVM不能保证StringBuilder的操作是安全的,虽然他的速度最快,但是可以保证StringBuffer是可以正确操作的。当然大多数情况下就是我们是在单线程下进行的操作,所以大多数情况下是建议用StringBuilder而不用StringBuffer的,就是速度的原因。

    我的博客里有关于字符串的详解http://www.cnblogs.com/yangliguo/p/7496431.html
    2、描述下HsahMap、hashtable、hashset的共同点与不同点

    我的博客里有关于HsahMap、hashtable、hashset的详解http://www.cnblogs.com/yangliguo/p/7476788.html

    编程题

    编写一个工具类CollectionTools,为其编写一个方法insertSect,功能是计算连个集合(Collection)的交集:传入参数是两个集合,返回结果是计算出来的交集。

    import java.util.HashSet;
    import java.util.Set;
    
    public class CollectionTools {
    	public static Set<Integer> insertSet(Set<Integer> C1, Set<Integer> C2) {
    		C1.retainAll(C2);
    		System.out.println(C1);
    		return C1;
    	}
    	public static void main(String[] args) {
    		Set<Integer> c1 = new HashSet<Integer>();
    		c1.add(3);
    		c1.add(2);
    		Set<Integer> c2 = new HashSet<Integer>();
    		c2.add(2);
    		c2.add(4);
    		System.out.println(CollectionTools.insertSet(c1, c2));
    	}
    
    }
    

    也可以用依次读出数据进行比较简单然后把相同的写到一个集合中。或者把两个集合的数据放到set集合中利用set的不含重复元素得到一个并集,然后求得他们的交集。
    2.编写一个对数据库表t_user进行update操作的完整java代码,请参考链接数据库和异常等的处理

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class main {
    
        public static void main(String[] args) {
            //声明Connection对象
            Connection con;
            //驱动程序名
            String driver = "com.mysql.jdbc.Driver";
            //URL指向要访问的数据库名mydata
            String url = "jdbc:mysql://localhost:3306/sqltestdb";
            //MySQL配置时的用户名
            String user = "root";
            //MySQL配置时的密码
            String password = "123456";
            //遍历查询结果集
            try {
                //加载驱动程序
                Class.forName(driver);
                //1.getConnection()方法,连接MySQL数据库!!
                con = DriverManager.getConnection(url,user,password);
                //2.创建statement类对象,用来执行SQL语句!!
                Statement statement = con.createStatement();
                //要执行的SQL语句
                String sql = "update t_user set id="+user.getId+"name"=user.getName+"login_name"+user.getLogin_name+"role_id"+user.getRole_id+"password"+user.getPsssword+"mobile"+user.getMobile;
                //3.ResultSet类,用来存放获取的结果集!!
                int rs = statement.execute(sql); 
                con.close();
            } catch(ClassNotFoundException e) {   
                //数据库驱动类异常处理
                System.out.println("Sorry,can`t find the Driver!");   
                e.printStackTrace();   
                } catch(SQLException e) {
                //数据库连接失败异常处理
                e.printStackTrace();  
                }catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }finally{
                System.out.println("数据库数据成功获取!!");
            }
        }
    
    }
    
    

    数据库连接方法比较多这里是最基础的。

  • 相关阅读:
    baselines库中cmd_util.py模块对atari游戏的包装为什么要分成两部分并在中间加入flatten操作呢?
    baselines库中atari_wrappers.py中的环境包装器的顺序问题
    baselines中环境包装器EpisodicLifeEnv的分析
    【转载】 为何大厂选择减人而不是降薪?
    神经网络初始化:xavier,kaiming、ortho正交初始化在CNN网络中的使用
    嵌入式开发之linuxweb 服务器Nginx 详解
    iotop
    blktrace 编译与使用
    文件系统预读
    玩儿观赏鱼教程一:鱼缸分类
  • 原文地址:https://www.cnblogs.com/yangliguo/p/7568567.html
Copyright © 2020-2023  润新知