java基础面试题

JAVA基础知识

  1. java中能够自动按照元素大小进行排列的数据结构是什么?
    TREE,实际运用中,我们使用封装好的Ztree框架

  2. list和set集合的区别和造成区别的原因
    这两者都集合,list集合,可以允许元素重复、并且有序,set是无序而且不重复
    原因:set中使用了hashcode和equals方法,判定了元素是否重复

  3. 在使用set和list方法中能否对集合进行额外的操作?如能否插入值?删除值?不能

  4. 在jsp页面中,jQuery是怎么拿到指定节点的兄弟节点的?
    $(’#id’).siblings() 当前元素所有的兄弟节点

               $('#id').prev()       当前元素前一个兄弟节点
    
               $('#id').prevaAll()   当前元素之前所有的兄弟节点
    
               $('#id').next()       当前元素之后第一个兄弟节点
    
               $('#id').nextAll()    当前元素之后所有的兄弟节点
    

底层原理:是通过原生DOM,指定节点的id去拿到该节点的父节点,然后再有父节点去拿到其他的节点。。。。
5、jQuery的选择器有些什么?原生的获得元素的方法?
Id选择器、class选择器、element选择器。。。。
docmentGetElementById(“”)…
6、线程是怎么创建和使用的?如何让线程启动?
继承Thread类或者实现runable的接口。使用start()方法启动
7、那么使用run()方法和start方法有什么区别和联系?
都是线程的方法。。。Run()方法让线程执行
方法
8、线程和进程是怎么回事,什么区别
进程是一系列线程构成的。。。
9、线程池的创建?都有什么类型,什么区别?使用线程池有什么好处?
ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); //无界线程池,可以进行自动线程回收
cachedThreadPool.execute(runnable)

ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3); //固定大小线程池
fixedThreadPool.execute(runnable)

ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);//创建一个定长线程池,支持定时及周期性任务执行
scheduledThreadPool.schedule(Runnable)

ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();//单线程
singleThreadExecutor.execute(Runnable)
从jdk1.5之后有四种类型的线程池,区别是,创建和回收的方式不同,详情百度

使用线程池,减少开销,提升性能
10、如何让线程同步?如何知道正在进行的线程
同步方法,代码块;加锁。。。给线程取名,有个T**属性能够查看
11、Strusts和spring的区别
传值上、标签库上、视图控制上。。。要答全面详细一些

复试问题:复试的问题会因人而异吧,复试我的是人社产品一部的老大助理,知道我原来做过软件的售前和售后。。问了很多和软件相关的问题,没有问java的问题。
Oracle和软件相关
1、有没有用过数据库,数据库执行增删改的语句
2、Oracle是如何将日期转换成字符、数字的
To_char\to_number
3、软件的需求。。。。。。
4、实施过程中有无问题和困难
5、完成外包的一个软件需求大概花了多少时间(从沟通到设计、到最后实施)
6、一张完整的财务记账凭证的构成要素
7、资产的分类
8、一般用到了什么表(现金流量、资产负债、利润表)

在面试之前有笔试题目,初级java会考选择、判断、填空和问答题
中级考编程
我自己做的是编程题。一共六题,五道都是编程(包括让数据从大到小排序、冒泡排序、创建线程池,交换数组元素等)难度一般,一道简答题:问,如何实现数据库的优化,网上有答案。照着套路来就行了。面试题没做完,好像不进行面试,尽量都写吧。

创建线程池
publicclass TestFixedThreadPool {
publicstaticvoid main(String[] args) {
//创建一个可重用固定线程数的线程池
ExecutorService pool = Executors.newFixedThreadPool(2);
//创建实现了Runnable接口对象,Thread对象当然也实现了Runnable接口
Thread t1 = new MyThread();
Thread t2 = new MyThread();
Thread t3 = new MyThread();
Thread t4 = new MyThread();
Thread t5 = new MyThread();
//将线程放入池中进行执行
pool.execute(t1);
pool.execute(t2);
pool.execute(t3);
pool.execute(t4);
pool.execute(t5);
//关闭线程池
pool.shutdown();
}
}

如何实现数据库的优化

  1.   利用表分区
    

分区将数据在物理上分隔开,不同分区的数据可以制定保存在处于不同磁盘上的数据文件里。这样,当对这个表进行查询时,只需要在表分区中进行扫描,而不必进行全表扫描,明显缩短了查询时间,另外处于不同磁盘的分区也将对这个表的数据传输分散在不同的磁盘I/O,一个精心设置的分区可以将数据传输对磁盘I/O竞争均匀地分散开。对数据量大的时时表可采取此方法。可按月自动建表分区。
2. 别名的使用

别名是大型数据库的应用技巧,就是表名、列名在查询中以一个字母为别名,查询速度要比建连接表快1.5倍。

  1.   索引Index的优化设计
    

索引可以大大加快数据库的查询速度,索引把表中的逻辑值映射到安全的RowID,因此索引能进行快速定位数据的物理地址。对一个建有索引的大型表的查询时,索引数据可能会用完所有的数据块缓存空间,ORACLE不得不频繁地进行磁盘读写来获取数据,因此在对一个大型表进行分区之后,可以根据相应的分区建立分区索引。但是个人觉得不是所有的表都需要建立索引,只针对大数据量的表建立索引。

小结:
1、公司看重基础知识的掌握,理解
2、看重表达能力,注意说话的逻辑关系和组织性
3、保持友善、谦逊的态度
4、面试的时候随和一点,初试的师兄问了那些问题之后,我们聊了二十来分钟,都是和java、工作无关的事情。复试也是。

针对性的复习内容:java基础知识,特别是数据结构,spring、mybatis、hibernate框架、前台的jquery。数据库重点复习Oracle

你可能感兴趣的:(java)