江苏某互联网公司 Java 面经-25分钟
江苏某互联网公司 Java 面经
刚面完,写一份面经~,总体来说,可能说既是八股又不是常规八股,因为面试官会追问,不是一些表面的东西去说,面试体验良好.jpg。
1)自我介绍
面试官:可以简单介绍一下自己吗?
2)毕业时间?
面试官:你是什么时候毕业?
我:25届,明年。
3)计划考研?
面试官:后面计划考研吗?
我:我是打算直接就业的,不考研(我也得能考上啊...)
4)Java 面向对象?
面试官:怎么理解 Java 面向对象?
我:万物皆对象,对客观事物进行抽象,比如人是一个父类,然后学生、老师等等都可以去 extends 人这个父类,做一些独特的实现,比如学习和教授课程。面向对象三特性:封装、继承、多态、这边这可以一个特点举一个例子讲。
5)在项目中是怎么利用到的?
面试官:你在项目中怎么利用三大特性的?
我:我用设计模式的例子去举例吧,比如我用到适配器模式,装饰器模式,这些就需要用到继承、封装、多态,这边可以详细讲一下某个设计模式的具体实现,以及作用,比如装饰器,动态给对象添加一些职责,是大盒子套小盒子的原理,然后调用的时候类似与前端的事件冒泡和事件捕获机制。
6)简单工厂、抽象工厂?
面试官:简单工厂、工厂方法、抽象工厂讲一下?
我:简单工厂,传输参数,去创建定制的商品,但不能进行动态的添加,必须要修改原有的工厂类,违背了设计模式的开闭原则(对拓展开放,多修改关闭),工厂方法,为每个不同的品牌、种类创建不同的工厂,每个工厂再自己创建产品,抽象工厂通过一组相关的工厂方法,增加具体工厂和产品族会很方便,符合开闭原则,但同样增加新的产品等级结构会很麻烦,一般还是简单工厂+策略模式+装饰器模式用的多一些。
7)ArrayList 和 LinkedList 迭代遍历 1亿条数据?
面试官:ArrayList 和 LinkedList forEach 迭代遍历 1亿条数据?谁快?
我:面试官这里是假设,实际上根本不用考虑1亿,ArrayList 由于是数组,数组是连续的内存地址,而 LinkedList 是利用指针,不连续的内存地址,连续的内存地址是可以利用缓存的,也就是 CPU 三级缓存,而不连续的内存地址需要去访问主存(物理内存),非缓存(工作内存)。计算机在读取内存中数据时,优先读取缓存中的数据,缓存速度>内存,而相邻的内存地址,计算机可以一次性读取多个数据库并存储在缓存,链表是随机访问的,需要多次从内存中数据,导致缓存中数据被频繁替换,降低缓存效率。为什么按数据块读取?不能单独读取某个地址的数据吗?内存页的概念
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
大学全部面经从大一到大四,从实习、秋招、春招等等,各种岗位,中小厂,乃至大厂面经! 公粽号:程序员落叶,里面分享全部文章详情。




 查看18道真题和解析
查看18道真题和解析