面试北京高思教育java开发考点总结---远程面试

北京高思教育是在11月底才开始招人的,一般来说好的企业都已经招满了人了,但是估计是做教育的,所以不怎么需要it人才吧!还有一点就是说只发实习offer,实习两个月之后再根据实际情况来考虑要不要留你。我也只是听说给的薪资待遇还不错,所以就去面试了,面试官是一个男生,感觉30岁左右,不要问我怎么知道的,然后全程都不想说话,估计因为周末所以不想工作,还有就是远程面试网络不是很好,有些时候交流不是很方便。然后下面说一下面试的主要内容。
1.java中继承与接口的区别?请说明他们相对而言的优缺点?
10:03:03
高思教育面试官 2017/11/25 10:03:03
参考回答:实际概念区别:
区别1:
不同的修饰符修饰(interface),(extends)
区别2:
在面向对象编程中可以有多继承!但是只支持接口的多继承,不支持’继承’的多继承哦
而继承在java中具有单根性,子类只能继承一个父类
区别3:
在接口中只能定义全局常量,和抽象方法
而在继承中可以定义属性方法,变量,常量等…
区别4:
某个接口被类实现时,在类中一定要实现接口中的抽象方法
而继承想调用那个方法就调用那个方法,毫无压力
2.LinkedList与ArrayList的区别,比较二者插入、删除、查找的时间复杂度?
10:07:37
高思教育面试官 2017/11/25 10:07:37
参考回答:ArrayList和LinkedList在性能上各有优缺点,都有各自所适用的地方,总的说来可以描述如下:
1.对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。对ArrayList而言,主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配;而对LinkedList而言,这个开销是统一的,分配一个内部Entry对象。

2.在ArrayList的中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在LinkedList的中间插入或删除一个元素的开销是固定的。

3.LinkedList不支持高效的随机元素访问。

4.ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间

可以这样说:当操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能;当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。

tips:

ArrayList 是线性表(数组)
get() 直接读取第几个下标,复杂度 O(1)
add(E) 添加元素,直接在后面添加,复杂度O(1)
add(index, E) 添加元素,在第几个元素后面插入,后面的元素需要向后移动,复杂度O(n)
remove()删除元素,后面的元素需要逐个移动,复杂度O(n)

LinkedList 是链表的操作
get() 获取第几个元素,依次遍历,复杂度O(n)
add(E) 添加到末尾,复杂度O(1)
add(index, E) 添加第几个元素后,需要先查找到第几个元素,直接指针指向操作,复杂度O(n)
remove()删除元素,直接指针指向操作,复杂度O(1)

3.left join,right join,join三个的区别?应用场景举例。
使用时需要注意的地方?
10:10:39
高思教育面试官 2017/11/25 10:10:39
参考回答:join等价于inner join内连接,是返回两个表中都有的符合条件的行。

left join左连接,是返回左表中所有的行及右表中符合条件的行。

right join右连接,是返回右表中所有的行及左表中符合条件的行。

full join全连接,是返回左表中所有的行及右表中所有的行,并按条件连接。

通常情况下,left join肯定比inner join返回的行数多。
4.如何优化一个慢查询?(可附加一个实际例子)
影响查询效率的原因?
10:13:58
高思教育面试官 2017/11/25 10:13:58
参考回答:首先对于慢查询我们需要找到原因,第一步肯定是通过命令查看慢查询日志,然后找出查询缓慢的原因。下面肯定是对数据库的优化:
1.大表划分成小表
2.使用水平划分和垂直划分来实现高效率
3.提高硬件的配置
4.优化查询SQL语句,如少使用* 、 in 、小表 join 大表
5.优化索引,建立有效的索引
6.数据库系统文件的优化,将数据文件索引文件、日志文件放在不同的磁盘,提高运行的并行度
5.请用自己的理解和经验叙述java的多线程,并举例
参考回答:使用什么是多线程。多线程是为了提高资源的利用率、解决并发问题、加快程序的执行而引入的。首先多线程实现有四种方式 1.继承Thread 类 2.实现Runnable接口 3.实现callabel接口,通过FutureTask包装器来创建Thread来创建线程 4.通过ExecuteService、callable、Future实现又返回结果的线程 举例就是购票 彩票

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值