美文网首页面试JAVA
2018-09-19 一小点面试题

2018-09-19 一小点面试题

作者: 闭门造折 | 来源:发表于2018-09-20 23:57 被阅读119次

    最近在找工作,投了一些简历,也参加了一场笔试,有几个公司也提供了笔试题样例。

    公司A

    投简历以后的个人测评
    分为

    1. 文章阅读提取段意
    2. 表格阅读数据整理
    3. 逻辑推理,找规律
    4. 个性评估
      四个部分。印象比较深刻的是逻辑推理最后一道题

    如果 C 7 刁 那么叩 9 ?
    请问?处最恰当的答案是
    A.G ____B.F
    C.B ____D.R

    没有思路,后来百度也没有解答。铜鱼告诉我说是我想太多了,这是幼儿园的题。实际考的是数圈。C、7、刁,都是没有圈。叩、9都有一个圈。所以答案是D,因为R也有一个圈。

    公司B

    线下笔试。
    考的题目比较基础,都是JAVA的一些概念和具体实现。只记得几道

    length()问题

    JAVA中数组和String,分别有length()函数吗?

    数组长度用length,是属性。数组定义的时候其实长度已经固定
    string可用length(),是方法。
    引申疑问:size()呢?
    答:List,Set,Map都可以用size(),表示泛型中元素个数
    参考资料《Java中的length和length()深入分析》

    代码结果推断
    public class TmpClass{
        private int a = 0;
        private Integer b = 0;
        private String c = "Good";
        public void method(int a, Integer b, String c){
            a = 10;
            b = 5;
            c = "Bad";
        }
    }
    
    TmpClass tc = new TmpClass();
    tc.method(1, 1, "Word");
    试问此时实例化对象tc中a,b,c的值分别是多少?
    

    仍然是0,0,和Good。
    原因是在函数method中,存在参数a,b,c。
    因此赋值操作实际上修改的是参数的取值。而属性中的a,b,c没被修改。
    如果参数名与a,b,c不同,则才可视作省略了this.的对属性赋值语句。

    List,Set,Map,Queue区别

    Set相当于集合,集合中对象无序,且没有重复对象
    List是列表,对象有序(存放进入时的顺序),可以有重复对象
    Map是映射,把键值和值捉对映射。
    Queue是队列,使用offer()和pull()来先进先出
    参考资料1《Java中Set,List,Map的区别》
    参考资料2《java集合--Queue用法》

    数据库的关系完整性
    1. 实体完整性:主键的值不可为空值
    2. 参照完整性:当外键是其他表的主键时,外键只能为空或对应主键的值。不能引用不存在的实体
    3. 用户定义完整性(域完整性):数据字段具有约束条件。如性别类约束为“男”或“女”。百分制成绩约束为0≤成绩≤100
    JSP相关

    JSP包含哪些元素?

    • JSP指令元素
    • JSP脚本元素
    • JSP动作元素
    • 注释
    HTTP相关

    HTTP协议是什么?

    超文本传输协议,是互联网上应用最为广泛的网络协议,所有WWW文件都必须遵守这个标准。是客户端和服务器端请求和应答的标准。

    计算机概念题

    一个float变量占多少字节?一个double变量占多少字节?

    变量名 字节
    boolean 8 1
    int 32 4
    float 32 4
    double 64 8
    char 16 2
    byte 8 1
    short 16 2
    long 64 8
    多线程实现

    有一个100的队列,编写程序实现:两个生产者,每3秒生产一个零件。一个消费者,每2秒拿走一个零件。

    wait()与notify()实现
    public class PublicBox{
        private int parts = 0;
        private int count = 1;
        public synchronized void increace(){
            对方法上锁保证同时只增加一个零件
            while (parts == 100){
                try{
                    wait();
                }catch (InterruptedException e){
                    e.printStackTrace();
                }
            }
            parts++;
            notify();
        }
        public int decreace(){
            while(parts == 0){
              try{
                    wait();
                }catch (InterruptedException e){
                    e.printStackTrace();
                }
            }
            parts--;
            notify();
            return this.count++;
        }
    }
    生产者
    public class Producer implements Runnable{
        private PublicBox box;
    
        public Producer(PublicBox box){
            this.box = box;
        }
    
        @Override
        public void run(){
            while(true){
                try{
                    Thread.sleep(3000);
                    box.increace();
                }catch(InterruptException e){
                    e.printStackTrace();
                }
            }
        }
    }
    消费者
    public class Consumer implements Runnable{
        private PublicBox box;
        
        public Consumer(PublicBox box){
            this.box = box;
        }
    
        @Override
        public void run(){
            while(true){
                int count = box.decreace();
                System.out.println("Consume  the No." + count);
            }
        }
    }
    

    参考资料《java 多线程并发之生产者消费者模式的两种实现》

    公司C

    笔试题模拟题,这个可以复制所以非常的全乎

    JVM相关

    以下哪个不属于JVM堆内存中的区域( )?
    A 常量池
    B old区
    C eden区
    D survivor区

    A常量池,常量池在方法区里面

    重载

    对于Java同一类中的两个方法,在判断它们是不是重载方法时,不考虑( )。
    A 返回值类型
    B 参数个数
    C 参数顺序
    D 参数类型

    这里涉及到了另一个问题

    我们经常能看到方法上面出现@Override,那么这是什么意思呢?

    重载:方法名一样,但是参数个数或类型不同,返回值类型可以相同也可以不同。无法以返回值类型作为判断标准
    覆写(重写):子类中方法与父类中方法有同样的方法名、返回类型和参数表,则新方法覆盖原有方法。

    @Override的作用就是,当你要覆写某个方法的时候,提前写上,如果你手滑没有覆写成功(比如变成重载了),他就会报错提示。
    参考资料《Java @Override的作用》

    语言基础

    数学表达式|x|<10 对应的Java表达式为( )。
    A x < 10 && x > -10
    B |x| < 10
    C x < 10 || x > -10
    D 10 > x > -10

    A 没啥好说的

    操作系统

    虚拟存储器是由操作系统提供的一个假想的特大存储器,它并不是实际的内存,其大小可比内存空间大得多。这种说法是否正确( )。
    A 正确
    B 错误

    A 用来快乐映射到外部存储器用的

    Windows

    Windows消息调度机制是( )。
    A 指令堆栈
    B 消息队列
    C 指令队列
    D 消息堆栈

    B 按一定优先级顺序处理(并不一定都是先进先处理)
    参考资料 《windows消息机制》

    数据结构

    二维数组和多维数组均不是特殊的线性结构。这种说法是否正确( )
    A 正确
    B 错误

    B 其实我不知道这个特殊指的是什么。百度到的大多是作为数据结构考试题出现,但是也没有解析。
    个人认为其实指的是多维数组是存储多个一维数组的特殊一维数组

    Python定义

    对Python函数式编程思想的理解中,不正确的是( )。
    A 函数式编程中,变量不可以指向函数
    B 高阶函数可以接收入另一个函数作为其输入参数
    C 函数式编程是一种结构化编程范式,是如何编写程序的方法论
    D 函数是第一等公民first class,是指它享有与变量同等的地位

    A 函数式编程中,函数和其他变量在同等地位,可以赋值给其他变量,也可以当做参数传入函数。
    参考资料《函数式编程思想:稍微接触篇》

    Python实际使用

    python正则中的^符号,用在一对中括号中则表示要匹配( )。
    A 字符串的开始
    B 字符串的结束
    C 仅中括号内含有的字符
    D 除中括号内的其它字符

    D 在中括号里表示非,如果没有中括号,表示匹配的字符串的开始

    SHELL语句

    在RHEL5系统中,小王希望将他执行的ls命令的输出结果保存在当前目录下文件output.ls中,以供日后进行分析和使用,但要求不覆盖原文件的内容,他应该使用的命令是( )。
    A ls—output.ls
    B ls<<output.ls
    C ls>output.ls
    D ls>>output.ls

    D >> 输出重定向,追加
    > 输出重定向,覆盖

    J2EE

    J2EE中,当把来自客户机的HTTP请求委托给servlet时,会调用HttpServlet的什么方法?

    1. Web客户向Servlet容器发出Http请求
    2. Servlet容器解析Web客户的Http请求
    3. Servlet容器创建一个HttpRequest对象,在对象中封装Http请求信息
    4. Servlet容器创建一个HttpResponse对象
    5. Servlet容器调用HttpServlet的service方法,这个方法根据request的Method来判断执行doGet还是doPost,把HttpRequest和HttpReponse对象作为service方法的参数传给HttpServlet对象。。
    6. HttpServlet调用HttpRequest的有关方法,获取HTTP请求信息
    7. HttpServlet调用HttpResponse的有关方法,生成响应数据
    8. Servlet容器把HttpServlet响应结果传给Web客户
      参考资料《牛客网原题 其他用户解答》

    相关文章

      网友评论

        本文标题:2018-09-19 一小点面试题

        本文链接:https://www.haomeiwen.com/subject/dvxwnftx.html