面试指南之互联网企业
写在前面
本节八股文是有针对性的重点练习
对HR/技术面试官之反问
- 能不能谈谈你作为一个老员工对公司的感受?
- 我觉得我这次表现得不是很好,你有什么建议或者评价给我吗?
- 公司对新入职的员工的培养机制是什么样的?
- 以您来看,这个岗位未来在公司内部的发展如何?
- 团队现在面临的最大的挑战是什么?
青岛乾程
List的遍历方式有哪些?
- 普通循环
- 增强for循环
- iterator遍历
谈谈你对AOP和IOC的理解
中科创达
什么是封装?
封装是指把一个对象的状态信息(也就是属性)隐藏在对象内部,不允许外部对象直接访问对象的内部信息。但是可以提供一些可以被外界访问的方法来操作属性。
怎么打破一个类的封装?
通过继承
怎样得到封装后对象的方法属性?
通过内置函数来访问。任何要访问类中私有成员变量的类都要通过这些getter和setter方法。
抽象类和接口区别和共同点?
区别:
- 接口中的成员变量只能是
public static final
类型的,不能被修改且必须有初始值,而抽象类的成员变量默认 default,可在子类中被重新定义,也可被重新赋值。 - 一个类只能继承一个类,但是可以实现多个接口。
- 接口主要用于对类的行为进行约束,你实现了某个接口就具有了对应的行为。抽象类主要用于代码复用,强调的是所属关系。
共同点:
- 都可以包含抽象方法。
- 都不能被实例化。
什么是继承?
举个例子,小明小红都是科大的学生,他们共享学生的特性(班级,学号),我们就可以把这部分共同点抽象出一个父类来,班级和学号这种共同的属性就在父类中。小明和小红通过继承父类,就可以拥有班级和学号的属性。而小明和小红也有不同的地方,比如小明每天早餐都吃包子,小红每天早餐都吃烧麦,这两个不同的行为可以分别在子类中体现。这就是继承。
集成的特点:
- 子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
- 子类拥有父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问,只是拥有。
- 子类可以用自己的方式实现父类的方法。
做项目的时候遇见的一些异常
- JDBC错误。看报错日志,如果出现这几个字,基本上是因为没连接数据库。
- 500错误。Tomcat没有配置相应的lib,用maven导jar包的话,也需要在tomcat上lib文件里导入相同的jar包。
- 400错误。前端传递的数据的字段名和后端实体类无法匹配,无法封装。
- 坑爹的500错误。这个错误折磨我很多次了,反复横跳。最多的原因在于,如果后端传递的值不是对象,而是单个的数据,那么传递的参数名必须要和实体类的属性名匹配,由于Spring托管,如果名字不匹配根本找不到对应的Service操作。
为什么使用单例模式,单例模式的优点
Java Singleton模式就为我们提供了这样实现的可能。使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,
有利于Java垃圾回收(garbage collection)。
单例模式:它的核心结构只包含一个被称为单例的特殊类。它的目的是保证一个类仅有一个实例,并提供一个访问它的全局访问点。
优点:
- 控制资源的使用,通过线程同步来控制资源的并发访问;
- 控制实例产生的数量,达到节约资源的目的。
- 作为通信媒介使用,也就是数据共享。
ArrayList的底层 得到ArrayList的某个值
ArrayList
底层使用的是Object
数组通过get(index)方法来获取,index是索引
For的迭代器中,删除添加,ArrayList的某个索引会出现问题?
在通过迭代器来遍历集合元素的同时,增加或者删除集合中的元素,有可能会导致某个元素被重复遍历或遍历不到。
什么是内存泄漏?
- 不再会被使用的对象的内存不能被回收,就是内存泄露。
- 如果长生命周期的对象持有短生命周期的引用,就很可能会出现内存泄露
ArrayList字符串进行字符串反转方法
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 胡小宁的博客!