栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java线下面试笔试总结

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java线下面试笔试总结

前几天去线下参加了面试(一面笔试+人事),整体感觉表现的不是很好,简略分析一下,第一点就是准备不充分,第二点就是对于基础知识掌握不够牢固,第三点就是刷的面试题太少(刷题+多敲代码分析),说说这次面试卷子情况其实卷子整体难度并不大,就是一些常规的Java基础题,主要涉及的知识点JavaSE语法,多线程,集合,JVM,IO流,JDBC,WEB,数据库,Linux等,下面就把一些能够记住的题记录一下。

题一:JVM类加载(先加载父类,再加载子类对象)
public class JsSyProject {
    public static void main(String[] args) {
        System.out.println(B.b);
    }

}

class A {
    static {
        System.out.println("A");
    }
}


class B extends A {
    public static String b= "C";

    static {
        System.out.println("B");
    }

}

运行效果:

题二:运算符
  // 面试第二题
    @Test
    public void test(){
        // 下面那个操作符不正确
        int i =12<<3;// 支持  左移
		

        // int i=0;
        // ++(i++);// 不支持
		i%=2;//  支持
    }
题三:this和super

① this是指向本对象的指针,super是指向父类对象
② super()、this()都必须出现在构造函数的第一行,且不能同时出现,因为this()中已经默认调用了父类的super()。
③ this出现在同类中,指代本类本对象;super出现在子类中,指代父类及父类的对象,且他们都指代对象,所以不能与static修饰符一起使用



题四:JUnit之TestCase,TestSuite和TestRunner
  • 测试类(TestCase):一个包含一个或是多个测试的类,在Junit中就是指的是包含那些带有@Test注解的方法的类,同一样也被称作“测试用例”;
  • 测试集(TestSuite):测试集是把多个相关测试归入一个组的表达方式,在Junit中,如果我们没有明确的定义一个测试集,那么Juint会自动的提供一个测试集,一个测试集一般将同一个包的测试类归入一组;
  • 测试运行器(TestRunner):执行测试集的程序。

学习链接:Junit核心——测试类(TestCase)、测试集(TestSuite)、测试运行器(TestRunner)

题五:创建型设计模式(设计模式)

下列哪一个不属于创建型设计模式:
A. 模板模式 B.工厂模式 C.抽象工厂模式 D.单例模式

  • 模板模式属于行为型模式
  • 创建型设计模式:工厂模式(Factory Pattern)抽象工厂模式(Abstract Factory Pattern)单例模式(Singleton Pattern)

题六: String和StringBuffer和StringBuilder

下图来源:String、StringBuffer与StringBuilder之间区别

  • String

String是一个字符数组 常量

  • StringBuffer

StringBuffer保存的是一个字符数组 变量



StringBuffer扩容机制


StringBuffer线程安全

  • StringBuilder

StringBuilder存放的内容为字符数组 变量


都是使用AbstractStringBuilder父类进行操作

线程不安全(速度更快,适合单线程操作)

题七:管道流

管道流是用来在多个线程之间进行信息传递的Java流,管道流分为字节流管道流(PipedOutputStream 和 PipedInputStream)和字符管道流(PipedWriter 和 PipedReader)。

题八:PreparedStatement比Statement有什么优势?

PreparedStatement是预编译的,因此,性能会更好。同时,不同的查询值,PreparedStatement可以重用。

题九:数据类型


修改后:

题十:Map,List,Set三个接口在存取数据的时候有什么差异

① List和Set是存储单列数据的集合,Map是存储键值对这样的双列数据的集合
② List中存储的数据是有顺序的,并且值允许重复;Map中存储的数据是无序的,它的键是不允许重复的,但是值是允许重复的;Set中存储的数据是无顺序的,并且不允许重复,但元素在集合中的位置是由元素的hashcode决定,即位置是固定的(Set集合是根据hashcode来进行数据存储的,所以位置是固定的,但是这个位置不是用户可以控制的,所以对于用户来说set中的元素还是无序的

题十一:抽象类和接口的区别

下面内容来源于:https://www.cnblogs.com/WanghHongLin/archive/2018/07/27/9380150.html

① 抽象类可以通过子类间接实例化,接口不能实例化,所以接口不占用堆空间,抽象类占用堆空间。
② 抽象类可以拥有私有属性、方法,接口不能拥有。
③ 抽象类方法不能使用default关键字修饰,接口方法可以。
④ 抽象类只能被extends不能被implements,接口可以被implements和extends
⑤ 接口没有构造方法,抽象方法有。接口调用newInstance()抛出 java.lang.NoSuchMethodException:Test2.< init>(),抽象类抛出 java.lang.InstantiationException
⑥ 接口所有变量都是public static final 不可变, 抽象类可以使用任意权限修饰符修饰变量。
⑦ 抽象类不能多extends,接口可以多extends
⑧ 抽象类抽象方法可以被public, protected修饰,接口抽象类只能被public 修饰
⑨ private 可以修饰内部类,private 不能修饰内部接口
⑩ 接口支持lambda表达式@FunctionInterface,抽象类不支持

题十二:JVM虚拟机


方法区位于线程共享区,所以线程是非隔离的

题十三:HTTP1.0与HTTP1.1

HTTP 有两个常用版本,分别是 HTTP1.0和 HTTP1.1。主要区别在于 HTTP1.0 中每次请求和应答都会使用一个新的 TCP连接,而从 HTTP1.1 开始,运行在一个 TCP 连接上发送多个命令和应答。因此大幅度减少了 TCP 连接的建立和断开,提高了效率。

相关学习链接(上面问题解答来源):https://www.cnblogs.com/it-tsz/p/11408668.html

题十四Linux命令

查看端口杀掉进程命令:

ps -ef| grep java   #查看当前的Java进程
kill -9 [端口号]  #强制杀掉

相关学习链接:Linux下JAVA常用命令大全

题十四:数据库(三张表的多对多查询,分组,递归排序)

如果一个表中(student)的性别是用数值0表男,1表女查询的时候显示男和女。

select name as '姓名',case sex  when '0'   then   '男'   when   '1'   then   '女'   end   as '性别'    from   student;
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/880489.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号