面试JAVA

2018-09-19 一小点面试题

2018-09-20  本文已影响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包含哪些元素?

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客户
    参考资料《牛客网原题 其他用户解答》
上一篇下一篇

猜你喜欢

热点阅读