黑马程序员技术交流社区

标题: JavaEE面试分享-------艾比利科技 [打印本页]

作者: SunYan    时间: 2018-7-30 12:58
标题: JavaEE面试分享-------艾比利科技
本帖最后由 SunYan 于 2018-7-30 14:15 编辑

公司名称:艾比利科技
公司地址:陕西省西安市雁塔区西安电子科技大学科技园C座
公司规模:50人

笔试题
   
   
面试总结:
   
1: ListMapSet三个接口存取元素时,各有什么特点?
   
答:
   
List以特定索引来存取元素,可以有重复元素。Set不能存放重复元素(用对象的equals()方法来区分元素是否重复)。Map保存键值对(key-value pair)映射,映射关系可以是一对一或多对一。Set和Map容器都有基于哈希存储和排序树的两种实现版本,基于哈希存储的版本理论存取时间复杂度为O(1),而基于排序树版本的实现在插入或删除元素时会按照元素或元素的键(key)构成排序树从而达到排序和去重的效果。
   
2: TreeMapTreeSet在排序时如何比较元素?Collections工具类中的sort()方法如何比较元素?
   
答:TreeSet要求存放的对象所属的类必须实现Comparable接口,该接口提供了比较元素的compareTo()方法,当插入元素时会回调该方法比较元素的大小。TreeMap要求存放的键值对映射的键必须实现Comparable接口从而根据键对元素进行排序。Collections工具类的sort方法有两种重载的形式,第一种要求传入的待排序容器中存放的对象比较实现Comparable接口以实现元素的比较;第二种不强制性的要求容器中的元素必须可比较,但是要求传入第二个参数,参数是Comparator接口的子类型(需要重写compare方法实现元素的比较),相当于一个临时定义的排序规则,其实就是通过接口注入比较元素大小的算法,也是对回调模式的应用(Java中对函数式编程的支持)。
   
   
3线程的sleep()方法和yield()方法有什么区别?
   
   
   
①    sleep()方法给其他线程运行机会时不考虑线程的优先级,因此会给低优先级的线程以运行的机会;yield()方法只会给相同优先级或更高优先级的线程以运行的机会;
    ② 线程执行sleep()方法后转入阻塞(blocked)状态,而执行yield()方法后转入就绪(ready)状态;
    ③ sleep()方法声明抛出InterruptedException,而yield()方法没有声明任何异常;
    ④ sleep()方法比yield()方法(跟操作系统CPU调度相关)具有更好的可移植性。
   
   
4: 简述synchronized 和java.util.concurrent.locks.Lock的异同?特点:
    答:Lock是Java 5以后引入的新的API,和关键字synchronized相比主要相同点:Lock 能完成synchronized所实现的所有功能;主要不同点:Lock有比synchronized更精确的线程语义和更好的性能,而且不强制性的要求一定要获得锁。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且最好在finally 块中释放(这是释放外部资源的最好的地方)
   
   
5:  JDBC能否处理BlobClob
   
答:
   
Blob是指二进制大对象(Binary Large Object),而Clob是指大字符对象(Character    Large Objec),因此其中Blob是为存储大的二进制数据而设计的,而Clob是为存储大的文本数据而设计的。JDBC的PreparedStatement和ResultSet都提供了相应的方法来支持Blob和Clob操作。例子如下:
   
create table    tb_user
   
(
   
id int primary key auto_increment,
   
name varchar(20)    unique not null,
   
photo longblob
   
);
   
import java.io.FileInputStream;
   
import java.io.IOException;
   
import java.io.InputStream;
   
import java.sql.Connection;
   
import java.sql.DriverManager;
   
import java.sql.PreparedStatement;
   
import java.sql.SQLException;
   
   
class JdbcLobTest {
   
   
    public static void main(String[]    args) {
   
        Connection    con = null;
   
        try {
   
   
            Class.forName("com.mysql.jdbc.Driver");
   
   
            con    =    DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123456");
   
   
            PreparedStatement    ps = con.prepareStatement("insert into tb_user values (default, ?,    ?)");
   
            ps.setString(1, "骆昊");            
   
            try (InputStream in = new FileInputStream("test.jpg"))    {   
   
                ps.setBinaryStream(2,    in);     
   
   
                System.out.println(ps.executeUpdate()    == 1 ? "插入成功" : "插入失败");
   
            } catch(IOException    e) {
   
                System.out.println("读取照片失败!");
   
            }
   
        } catch (ClassNotFoundException |    SQLException e) {   
   
            e.printStackTrace();
   
        } finally {
   
            try {
   
                if(con    != null &&    !con.isClosed()) {
   
                    con.close();   
   
                    con    = null;   
   
                }
   
            } catch (SQLException e) {
   
                e.printStackTrace();
   
            }
   
        }
   
    }
   
}
   
   
   
   
6: 简述一下你了解的设计模式
   
   
所谓设计模式,就是一套被反复使用的代码设计经验的总结(情境中一个问题经过证实的一个解决方案)。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使人们可以更加简单方便的复用成功的设计和体系结构。将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。
    在GoF的《Design Patterns: Elements of Reusable    Object-Oriented Software》中给出了三类(创建型[对类的实例化过程的抽象化]、结构型[描述如何将类或对象结合在一起形成更大的结构]、行为型[对在不同的对象之间划分责任和算法的抽象化])共23种设计模式,包括:Abstract Factory(抽象工厂模式),Builder(建造者模式),Factory Method(工厂方法模式),Prototype(原始模型模式),Singleton(单例模式);Facade(门面模式),Adapter(适配器模式),Bridge(桥梁模式),Composite(合成模式),Decorator(装饰模式),Flyweight(享元模式),Proxy(代理模式);Command(命令模式),Interpreter(解释器模式),Visitor(访问者模式),Iterator(迭代子模式),Mediator(调停者模式),Memento(备忘录模式),Observer(观察者模式),State(状态模式),Strategy(策略模式),Template Method(模板方法模式), Chain Of Responsibility(责任链模式)。
    面试被问到关于设计模式的知识时,可以拣最常用的作答,例如:
    - 工厂模式:工厂类可以根据条件生成不同的子类实例,这些子类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作(多态方法)。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。
    - 代理模式:给一个对象提供一个代理对象,并由代理对象控制原对象的引用。实际开发中,按照使用目的的不同,代理可以分为:远程代理、虚拟代理、保护代理、Cache代理、防火墙代理、同步化代理、智能引用代理。
    - 适配器模式:把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起使用的类能够一起工作。
    - 模板方法模式:提供一个抽象类,将部分逻辑以具体方法或构造器的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法(多态实现),从而实现不同的业务逻辑。
   
7: 描述一下JVM加载class文件的原理机制?
   
JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java中的类加载器是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件中的类。
    由于Java的跨平台性,经过编译的Java源程序并不是一个可执行程序,而是一个或多个类文件。当Java程序需要使用某个类时,JVM会确保这个类已经被加载、连接(验证、准备和解析)和初始化。类的加载是指把类的.class文件中的数据读入到内存中,通常是创建一个字节数组读入.class文件,然后产生与所加载类对应的Class对象。加载完成后,Class对象还不完整,所以此时的类还不可用。当类被加载后就进入连接阶段,这一阶段包括验证、准备(为静态变量分配内存并设置默认的初始值)和解析(将符号引用替换为直接引用)三个步骤。最后JVM对类进行初始化,包括:1)如果类存在直接的父类并且这个类还没有被初始化,那么就先初始化父类;2)如果类中存在初始化语句,就依次执行这些初始化语句。
    类的加载是由类加载器完成的,类加载器包括:根加载器(BootStrap)、扩展加载器(Extension)、系统加载器(System)和用户自定义类加载器(java.lang.ClassLoader的子类)。从Java    2(JDK 1.2)开始,类加载过程采取了父亲委托机制(PDM)。PDM更好的保证了Java平台的安全性,在该机制中,JVM自带的Bootstrap是根加载器,其他的加载器都有且仅有一个父类加载器。类的加载首先请求父类加载器加载,父类加载器无能为力时才由其子类加载器自行加载。JVM不会向Java程序提供对Bootstrap的引用。

面试总结:很有前瞻性的一家公司。
作者: 逆风TO    时间: 2018-7-30 14:08
感谢分享
作者: JavaEE风清扬    时间: 2018-8-13 14:07
谢谢楼主,辛苦了...........
作者: superbaby    时间: 2018-8-13 14:24
不错不错加油.............
作者: yy1134787753    时间: 2018-8-13 14:25
感谢分享
作者: hello!!!    时间: 2018-8-13 14:25
感谢分享
作者: 小公举    时间: 2018-8-13 14:25
感谢分享   祝您工作愉快   事事顺心
作者: 仙人掌Sandy1    时间: 2018-8-13 14:33
感谢分享   祝您工作愉快   事事顺心
作者: ouweina    时间: 2018-8-13 14:33
66666666666666666666666666666666
作者: 哦嗨呦    时间: 2018-8-13 14:35
顶!!!!!!!!!!
作者: 专找bug    时间: 2018-8-13 14:35

感谢分享~
作者: wangxue123456    时间: 2018-8-13 14:42
同是腰间盘突出   你为何这么突出
作者: 760486198    时间: 2018-8-13 14:57

作者: 疯子小花花    时间: 2018-8-13 15:09

作者: yangyifen    时间: 2018-8-13 15:29
厉害厉害
作者: zhanghua342    时间: 2018-8-13 15:31
哇哦!腻害了。
   感恩分享!
作者: 从容微笑    时间: 2018-8-13 15:44
很详细,辛苦啦
作者: little_superman    时间: 2018-8-13 19:06
666666666666666666666666
作者: zplxwl    时间: 2018-8-13 19:46

感谢分享
作者: mydorling11    时间: 2018-8-13 21:28
这个面试很简单so easy
作者: 黑马程序员啊    时间: 2018-8-13 21:56
感谢分享
作者: 耙丫丫    时间: 2018-8-13 22:29

作者: 零度☆黎明    时间: 2018-8-13 23:15
不错, 不错 ..................
作者: 谢先森    时间: 2018-8-14 00:13
6666666666666666666666666
作者: 谢先森    时间: 2018-8-14 00:16
2333333333333333333333
作者: json0314    时间: 2018-8-14 08:29
赞赞赞~~~
作者: 致橡树    时间: 2018-8-14 08:55
豪车鸣笛惊了狗咬了驴踢了车,请问谁之过?
作者: ruoquan    时间: 2018-8-14 09:02
感谢分享。。。。。
作者: 小丹子    时间: 2018-8-14 09:10
不得不给小哥哥点赞!
作者: zhaosongzhi    时间: 2018-8-14 09:53
66666666666666666666666666的飞起
作者: SunYan    时间: 2018-8-14 09:58
黑马6666666666666666666666666666
作者: 殷凯老师    时间: 2018-8-14 10:19
感谢分享!!!!!
作者: 半个程序员    时间: 2018-8-14 10:21

感谢分享   祝您工作愉快  
作者: duanshaobo    时间: 2018-8-14 10:47
不要把浮躁的生活当做成长
作者: 举个栗子    时间: 2018-8-14 13:04

作者: xiaoheizi    时间: 2018-8-14 13:24

作者: 小伙啊    时间: 2018-8-14 13:39
不错不错加油............
作者: py@py    时间: 2018-8-14 13:42
感谢分享+1

作者: yujq    时间: 2018-8-14 13:49
6666666666666666666666666666666666
作者: 1098018910    时间: 2018-8-14 17:31
感谢分享   祝您工作愉快   事事顺心
作者: 疯言峰语    时间: 2018-8-14 18:08
66666666666666666
作者: 18309299426    时间: 2018-8-14 18:27
面试分享  不错哦  值得借鉴

作者: 淡写薰衣草的香    时间: 2018-8-14 19:00
很受用  谢谢

作者: huochao    时间: 2018-8-14 22:13
6666666666666666666666
作者: 18629541359    时间: 2018-8-15 12:15
总结到位,言简意赅。
作者: 18629541359    时间: 2018-8-15 12:40
很不错,加油啊...。谢谢分享!
作者: SharkSSB    时间: 2018-8-15 13:10
点赞支持加油
作者: 王航    时间: 2018-8-15 13:53
666666666666666666666
作者: 巴拉拉小魔仙    时间: 2018-8-15 15:32

作者: 同心筑梦1    时间: 2018-8-15 15:41

作者: 温柔一刀!喵!    时间: 2018-8-15 15:42
感谢分享!
作者: 凯凯小王子    时间: 2018-8-15 15:47
6666666666666666
作者: 小西西哦    时间: 2018-8-15 16:44
666666666666666666666666666666666666
作者: 多喝点热水~    时间: 2018-8-16 09:04
                     
作者: zhuyanting    时间: 2018-8-16 09:19

每一次的分享都是非常实用的
作者: hongping    时间: 2018-8-16 10:04

作者: fujiangbo    时间: 2018-8-16 10:10
不错不错加油.............
作者: 小航子    时间: 2018-8-16 10:11
感谢分享
作者: 小航子    时间: 2018-8-16 10:12
感谢分享
作者: 小航子    时间: 2018-8-16 10:13
感谢分享
作者: dajiahao    时间: 2018-8-16 10:49
6666666666666666
作者: 指间    时间: 2018-8-16 11:07
6666666666666
作者: 兮兮哈哈    时间: 2018-8-16 11:18
666666666666666
作者: 你不爱我    时间: 2018-8-16 12:46
感谢分享~
作者: 指间    时间: 2018-8-16 12:46
666666666666666666
作者: #风萧萧#    时间: 2018-8-16 17:30

不错不错加油.............
作者: 逆风TO    时间: 2019-8-6 10:11
逆风TO 发表于 2018-7-30 14:08
感谢分享

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:11
JavaEE风清扬 发表于 2018-8-13 14:07
谢谢楼主,辛苦了...........

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:11
superbaby 发表于 2018-8-13 14:24
不错不错加油.............

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:11
yy1134787753 发表于 2018-8-13 14:25
感谢分享

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:11
hello!!! 发表于 2018-8-13 14:25
感谢分享

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:11
yy1134787753 发表于 2018-8-13 14:25
感谢分享

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:11
hello!!! 发表于 2018-8-13 14:25
感谢分享

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:12
仙人掌Sandy1 发表于 2018-8-13 14:33
感谢分享   祝您工作愉快   事事顺心

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:12
ouweina 发表于 2018-8-13 14:33
66666666666666666666666666666666

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:12
ouweina 发表于 2018-8-13 14:33
66666666666666666666666666666666

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:12
哦嗨呦 发表于 2018-8-13 14:35
顶!!!!!!!!!!

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:12
专找bug 发表于 2018-8-13 14:35
感谢分享~

不错不错!不错不错!
作者: 逆风TO    时间: 2019-8-6 10:12
wangxue123456 发表于 2018-8-13 14:42
同是腰间盘突出   你为何这么突出

不错不错!不错不错!
作者: 逆风TO    时间: 2019-8-6 10:12
760486198 发表于 2018-8-13 14:57

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:12
疯子小花花 发表于 2018-8-13 15:09

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:12
yangyifen 发表于 2018-8-13 15:29
厉害厉害

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:12
zhanghua342 发表于 2018-8-13 15:31
哇哦!腻害了。
   感恩分享!

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:12
从容微笑 发表于 2018-8-13 15:44
很详细,辛苦啦

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:13
little_superman 发表于 2018-8-13 19:06
666666666666666666666666

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:13
zplxwl 发表于 2018-8-13 19:46
感谢分享

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:13
mydorling11 发表于 2018-8-13 21:28
这个面试很简单so easy

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:13
zplxwl 发表于 2018-8-13 19:46
感谢分享

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:16
黑马程序员啊 发表于 2018-8-13 21:56
感谢分享

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:16
耙丫丫 发表于 2018-8-13 22:29

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:16
零度☆黎明 发表于 2018-8-13 23:15
不错, 不错 ..................

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:16
谢先森 发表于 2018-8-14 00:16
2333333333333333333333

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:16
json0314 发表于 2018-8-14 08:29
赞赞赞~~~

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:16
致橡树 发表于 2018-8-14 08:55
豪车鸣笛惊了狗咬了驴踢了车,请问谁之过?

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:16
ruoquan 发表于 2018-8-14 09:02
感谢分享。。。。。

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:16
小丹子 发表于 2018-8-14 09:10
不得不给小哥哥点赞!

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:16
zhaosongzhi 发表于 2018-8-14 09:53
66666666666666666666666666的飞起

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:17
SunYan 发表于 2018-8-14 09:58
黑马6666666666666666666666666666

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:17
殷凯老师 发表于 2018-8-14 10:19
感谢分享!!!!!

不错不错!
作者: 逆风TO    时间: 2019-8-6 10:17
半个程序员 发表于 2018-8-14 10:21
感谢分享   祝您工作愉快

不错不错!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2