简历是在Boss直聘上投的,可能是没设置消息提醒,公司给我约面试时间,我过了好几天才回复…发现后立马回复HR,HR小姐姐人很好看到消息后,就给我约了今天下午的远程面试嘻嘻嘻~
还在上大二的我,这次难得的机会被我把握住了。准时的开始了面试:

  1. 自我介绍
  2. 自我介绍中提到了自己做的一个项目,展开聊了大概20分钟…
    (大概问了项目的某一个功能模块具体很多问题后,开始问Java基础)
  3. 在你项目中哪些业务使用了这个Redis?(因为项目中提到了Redis,因此开始了Redis轰炸)
  4. Redis支持哪几种基本数据类型?

字符串、散列、列表、集合、有序集合

  1. Redis 和 Memcached 的区别?(答上来了三点)
  1. 存储方式:Memchched数据是全部放在内存之中,关机断电就会挂掉,数据不能超过内存大小。而Redis部分数据是存放在硬盘上的,这样能保证数据的持久性
  2. 数据类型支持:Memcached对数据类型的支持很简单,只支持简单的key-value。而Redis支持五种数据类型
  3. 底层模型不同:他们之间底层实现以及与客户端之间通信的应用协议不一样
  4. Value的大小:Redis可以达到1GB,而Memcached只有…1MB
  1. 请说明String是最基本的数据类型吗?(第一次面试也问了)

不是
String是引用数据类型 底层是通过字符数组实现. 简单来说就是 String 类利用了 final 修饰的 char 类型数组存储字符

  1. 那么Java有哪些基本数据类型?(第一次面试也问了)

byte、short、long、int、char、float、double、boolean

  1. 基本数据类型int占几个字节?char占几个字节?

Java基本类型占用的字节数:
1字节: byte , boolean
2字节: short , char
4字节: int , float
8字节: long , double
注:1字节(byte)=8位(bits)

  1. em…我们来谈谈集合吧。ArrayList和LinkedList有什么区别?
  1. ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
  2. 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移 动指针。
  3. 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动 数据。
  1. 我们知道List是一个接口,那么它有哪些实现类呢?(感觉被为难了,只答了前两种…)
  1. ArrayList(采用的是数组的方式实现,读取速度快,扩容速度慢,线程不安全)
  2. LinkedList(双向链表,读效率低,写效率高,操作效率高等特性,适合用于频繁add,remove等操作的List,线程不安全)
  3. Vector(Vector是一种线程安全的List结构,它的读写效率不如ArrayList,其原因是在该实现类内在方法上加上了同步关键字)
  4. Stack(继承于Vector,基本特性与Vector一致,线程安全,但效率低,实际就是利用Vector抽象成栈,使之拥有后进先出的特性)
  1. 接口和抽象类的区别是什么?
  1. 一个类可以实现多个接口,但一个类只能继承一个抽象类。
  2. 接口只有定义,不能有方法的实现,而抽象类可以有定义与实现,方法可在抽象类中实现。
  3. 接口中的变量必须用 public static final 修饰,并且需要给出初始值。所以实现类不能重新定义,也不能改变其值。
  1. 重载和重写的区别?
    Java某公司一面面经

重载:重载发生在本类,方法名相同,参数列表不同,与返回值无关,只和方法名,参数列表,参数的类型有关.
重载的特征:

  1. 方法名必须相同
  2. 方法的参数列表一定不一样
  3. 访问修饰符和返回值类型可以相同也可以不同

重写:一般都是表示子类和父类之间的关系,其主要的特征是:方法名相同,参数相同,但是具体的实现不同.
重写的特征:

  1. 方法名必须相同,返回值类型必须相同
  2. 参数列表必须相同
  3. 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。
  1. ==与 equals有什么区别?
  1. ==是判断两个变量或实例是不是指向同一个内存空间,equals是判断两个变量或实例所指向的内存空间的值是不是相同
  2. ==是指对内存地址进行比较 , equals()是对字符串的内容进行比较
  3. ==指引用是否相同, equals()指的是值是否相同
  1. StringBuffer和StringBuilder 的区别是什么?(没答上来)

就说了这一句…StringBuilder 与 StringBuffer 都继承自 AbstractStringBuilder 类

  1. StringBuffer 与 StringBuilder 中的方法和功能完全是等价的
  2. 只是StringBuffer 中的方法大都采用了 synchronized 关键字进行修饰,因此是线程安全的。
    而 StringBuilder 没有这个修饰,可以被认为是线程不安全的。
  3. 在单线程程序下,StringBuilder效率更快,因为它不需要加锁,不具备多线程安全。而StringBuffer则每次都需要判断锁,效率相对更低
  1. Java关键字常用的四种修饰符有哪些?说说它们的作用域?

我答了三种public、private、protected…default这个没怎么有接触过的印象(心里一万个草泥马,这是什么鬼…)
作用域:

  1. public: 具有最大访问权限。只要在同一项目下,都可以
  2. protected: 不同包下的类是不能使用的
  3. private:访问权限类本身
  4. default:它是针对本包设计的,它所修饰的在本包下的其他类都访问

(怎么还有…这也太多了吧。心态炸了,快顶不住了…)

  1. 请说明一下Java中都有哪些方式可以启动一个线程?(第一次面试也问了)
  1. 继承Thread()类,重写run()方法
  2. 实现Runnable方法,重写run()方法
  3. 实现Callable方法,重写call()方法
  4. 线程池
  1. 启动线程调用什么方法?

(心里想了一下才说,怎么这么简单呢?)
.start()

(我其实准备了很多关于多线程方面的问题…然后就问了这么简单的俩,估计留在了二面吧)

  1. 能接受加班嘛?

em…当然,我说的两点前都可以…凌晨(他笑了)

好了,今天的面试就到这里,可能会安排二面,等通知吧
(时间差不多刚好一个小时)

总结:问的所有问题基本都写全了,项目和Java基础很重要,都是先项目然后再问基础,然后…才会有然后啊哈哈哈。实话实说挺紧张的,对这方面也没什么经验,希望大家看到后能多多指出不足之处。

感悟:整体来说呢,面试完心情特别好…呵呵呵,也许这是第二次面试心里小激动吧。跟以前的考试一个感觉,考完不管结果,心里很愉悦。em…不到几个小时,收到了二面通知,祝我好运吧,加油!

相关文章:

  • 2018-07-19
  • 2021-11-16
  • 2021-11-10
  • 2022-12-23
  • 2022-12-23
  • 2021-07-11
  • 2022-12-23
  • 2020-06-30
猜你喜欢
  • 2021-05-27
  • 2022-02-08
  • 2022-12-23
  • 2021-11-02
  • 2021-06-19
  • 2021-11-11
  • 2022-12-23
相关资源
相似解决方案