2017网易秋招内推面试经历

记录下面试的一些问题:有些问题具体解释篇幅太长,用链接来跳转。


1、稳定的排序有哪一些?什么时候用稳定排序,什么时候不用?


http://blog.csdn.net/fly_thewind/article/details/52203402

稳定的排序有冒泡排序,插入排序,基数排序,归并排序。

当时,我记得自己完全不知道在想什么,什么时候用稳定排序,我就说当不需要考虑相同元素的先后顺序的时候用稳定,不稳定则反之。现在想着感觉就是在扯淡。。网上查了点资料,基本没有这方面的讨论。我总结了大约2点:

1、不稳定排序效率普遍高于稳定排序,只有归并排序可以到达O(blogn),其他的O(n^2).

2、举个具体例子,比如:假设有一序列,需要先按第一关键字排序,第一关键字相同的可以按第二关键字排序。那么处理方法可以这样:先按第二关键字排序,再按第一关键字稳定排序,目的就达到了。


2、grep命令

http://blog.csdn.net/fly_thewind/article/details/52203529

虽然看过点Linux,但是只看了一点。。并没有用过grep命令,所以爆炸。


3、HashMap的底层实现,当Hash值有冲突时,怎么办?

HashMap中是数组和链表的结合,数组中的每一个元素都是链表的表头节点。

http://blog.csdn.net/fly_thewind/article/details/52204167

我估计是我没回答出来HashMap的底层实现,他想提示我。。所以让我回答这个问题。然而不知道上面的问题想下面的问题确实不容易。

如果发生冲突的话,可以使用

开放地址法和拉链法来解决冲突问题。当时,我只回答了重构hash函数。对前面2种方法有点印象但是想不起来。

开放地址法:就是通过探测算法,当当前key所对应的位置被占用是,继续找下一个可用位置。

拉链法:在同一个Key所在的位置,对应不同的value值。value以链表的形式存在。


4、抽象类与接口

1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;

  2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;

  3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;

  4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。

当时只回答了第一点和第四点。感觉还是基础不够扎实。

如果觉得有点陌生,可以看下下面的一篇文章,觉得有关门和报警器这段会让你对抽象类和接口有更深的理解。

http://www.cnblogs.com/dolphin0520/p/3811437.html

5、java1.8特性,lambda表达式是语法糖吗?

这个问题感觉是被自己坑进去的,上个问题中,我回答不同时,说了抽象类中可以具体实现的方法,而接口中不能,结果他开始问我使用java的版本是什么。而我这种新手当然一般每次重装JDK都用最新的,结果Java8中有一个对接口可以提供被实现的方法,只需要添加defeat前缀。

然后,我嘴贱,提了一嘴,Lambda表达式,他问我用法,我提了个排序比较的例子,他又问是不是语法糖。。

结果又是懵逼了。

答案应该是就是语法糖。

7、sychronized用来修饰类方法和方法有什么区别?

这个问题,我想先系统的看看多线程以后再进行补充。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值