• 某影业面试准备


    1、String.StringBuffer,String.StringBuilder的区别

    答:两者都是字符串变量,区别在于buffer是线程安全的,用于多线程;builder非线程安全,用于单线程

    2、jvm类加载机制

    答:jvm也就是java虚拟机,是java实现平台无关性的关键所在。jvm把描述类的class文件加载到内存,对数据进行校验、转换解析、初始化,最终形成被jvm直接使用的java类型。

    3、说说GC;什么时候进行full GC

    答:堆内存分年轻代、年老代、持久代三部分;一般而言,年轻代有eden区和两个survivor区;大部分对象主要在Eden区,如果Eden区满之后,存活对象会被复制到一个survivor区;该survivor区满后,仍存活的对象被复制到另一个survivor区;当另一个survivor区也满时,则被复制到年老区;年老区满了,则会触发Full GC(也叫major gc)。持久代,主要存放静态文件,如java类,方法等

    4、与GC有关的jvm参数

    答:要合理分配内存大小,以减少gc数量。如果项目大多是短生命期的对象,则可以适当调大Eden区的大小,以减少minor gc(young gc)的次数;可以通过-XX:NewRatio调整年轻代,年老代的内存比例,比如-XX:NewRatio=3代表 年轻代:年老代=1:3。但是要主要,调大年轻代内存会减少年老代内存,可能会造成频繁major gc,造成线程停顿影响吞吐量。可以用-Xms和-Xmx设置堆内存的初始最小/最大值;-XX:NewSize和-XX:MaxNewSize设置年轻代;-XX:PermSize和-XX:MaxPermSize设置年老代内存

    5、接口和抽象类的区别

    答:抽象类,可以多继承,抽象类只能单继承;接口中只能是抽象方法,抽象类可以有方法体,都不能被实例化

    6、synchronized和lock的区别

    答:synchronized是jvm层面的,遇到异常会自动释放;lock是代码实现的,必须在finally代码块来unlock

    7、查询数据库比较耗内存的写法有哪些

    答:全表扫描?什么情况下会导致全表扫描呢?模糊查询LIKE、is null单索引失效导致全表扫描、不等号<> !=、不带条件的select count(*)、...

    8、查看进程命令;监听端口命令

    答:这个主要涉及Linux一些命令。进程查看:ps aux, ps -ef、端口监听:netstat, lsof -i、磁盘占用:df -h, du -sh、文件操作:mv,vi,cp,chmod、性能监控:top,dstat

    9、多态实现原理

    答:原理不懂,对于测试岗位,是不是可以原谅?简单讲下,什么叫多态:父类引用指向子类对象,调用方法的时是调用子类方法,而非父类的方法。多态的三个前提:继承、子类重写父类方法、父类引用指向子类对象。java的多态可以通过接口、继承实现

    10、java的异常处理

    答:java所有异常的基类为throwable,该基类下有erro和exception两个子类。error表示运行时环境发生严重错误,一般程序无法从错误中恢复,如jvm内存溢出。程序员能控制的也就是exception,exception有IoException和runtimeException两个子类。ioexcetion如文件不存在等,runtimeException如类不存在,方法不存在,空指针等。

    11、jacoco原来

    答:jacoco,大名鼎鼎的java代码覆盖率统计工具,开源的。统计原理有修改字节码、插桩2种方式;插桩有实时(on-the-fly)和离线(offline)两种形式;on-the-fly模式,jvm通过-javaagent指定jar文件,加载类的时候,修改class文件,插入统计代码;offline模式,先对java文件进行插桩,然后再生成class文件和jar包

    12、Spring ioc

    答:控制反转,依赖注入。一般情况下,需要使用一个对象实例,需要先new一个再使用,控制权都在程序员手里。有Spring后,程序员只需要使用对象,至于什么时候生成对象,什么时候注入程序,这些全交给Spring,相当于控制权交给了Spring,不再是程序员了,所以叫控制反转。那么,这么做的好处是什么???松耦合,提高复用性

    13、testNg

    14、jmeter

    15、性能测试相关知识

    16、db连接池c3p0 和druid

    17、写出单例模式,包含非线程安全、线程安全情况

    答:http://blog.csdn.net/cczz598/article/details/45183021

     18、hashMap和hashTable的区别

    答:hashMap非线程安全,hashTable是线程安全的;hashMap允许key和value为null,但是hashTable不允许

    19、ArrayList和LinkedList的区别

    答:ArrayList是基于动态数组的结构,LinkedList是基于链表的;随机get,set,ArrayList要快;add和remove,LinkedList有优势

    20、查看mysql的运行状态

    答:show status

    ====================结语=============

    很意外,基本没问到技术性东西,都是问流程性的,以及对着简历扣细节,难道真的是招测试开发???

    一面电话面试,有个问题没答上来;终面也有一个没答上来

    补充1:MySQL分页查询,为什么offset增大导致性能下降;如何优化

    答:原因是,分页查询并不是直接跳过offset行,而且取offset+N行,放弃前offset行,再返回N行。如果每行字段很多,offset很大,自然会慢。优化,可以先取得主键,再根据主键查询。详情可以参考https://segmentfault.com/a/1190000005007706

    补充2:sonar静态扫描的原理是什么?如何根据规则扫描出问题的

    答:...

  • 相关阅读:
    maven项目诡异的问题
    13) Developing Java Plugins
    15) maven dependency scope
    Bootstrap学习记录
    电力
    MongoDB学习记录
    Java基础知识
    旅游
    人生感悟
    【转】25岁到55岁:如何规划人生最重要的三个十年
  • 原文地址:https://www.cnblogs.com/dannyyao/p/8409351.html
Copyright © 2020-2023  润新知