java后台实习面试经历

作为一个一周只用上一节课的大三计算机渣渣,想要尽快找到实习,于是有了第一次面试,在这里分享一下自己的经验.面试的公司是深圳平安科技旗下的一个小公司,面试的岗位是java后台,面试官是公司里的一名普通员工,整个面试只持续了半小时,因为所有问题都只是点到为止,我也没有继续扩展.面试官看了我的简历,知道我是大三的,所以都是问一些很基础的东西,奈何作为第一次面试的我,很紧张,很多东西都没有答好.回想一下面试官问的问题.

1.知道哪些java集合

 我:集合总的分为两大类:Collection和Map,Collection下有List,Set,Vector,Stack等,Map下有HashMap,HashTable,TreeMap等;

2.HashMap用过吗,HashMap实现,用过HashMap哪些函数

我:用过

HashMap实现: HashMap实现是数组+链表或者数组+红黑树,数组的每个元素用来存hash值相同的对象,解决冲突的方式是冲突链表的方式,如果冲突对象多于8个改用红黑树.然后说了下hashCode和equals,hashCode用来计算hash值,多个对象可能有相同的hash值,equals用来解决冲突,区别两个对象是否是同一个

HashMap函数:我说了几个关键的,面试官又给我补充了.

  1. get(Key):通过Key获取Value
  2. put(Key,Value):添加一个键值对
  3. remove(Key):通过Key删除一个键值对
  4. clear():清空
  5. 等等

补充一个知识点:HashMap的扩容:HashMap有两个跟容量相关的变量:initialCapacity和loadFactor,默认值分别为16和0.75,在当前元素数量超过当前容量*loadFactor,将会将容量翻倍

3.HashMap和HashTable的区别

我只说了HashMao不是线程安全的,HashTable是线程安全的,面试官补充了一点HashTable的Key和Value都不能为null,而HashMap的Key有一个可以为null,Value有多个可以为null

4.说一下多线程

我:一脸懵逼,多线程这么多概念.我就说了创建线程的三种方法:

  1. 继承Thread
  2. 实现Runnable接口
  3. 实现Callable接口,有返回值

5.说一下线程池

我:线程池都实现了concurrent包下的ExecutorService接口,事后我觉得面试官可能是想让我说出线程池是由一个线程通过任务委派方式给线程池让它去异步执行的机制,在后台执行而不影响当前线程的进行,具体实现类的线程池由Executors的静态方法获取

6.说一下wait和sleep的区别

我:wait是放在Synchronized同步进程块里的,只能通过notify或者notifyAll唤醒,sleep是在一段时间后才能进入就绪状态.面试官说没答到点上,最主要的区别是wait不释放对象锁,而wait释放对象锁进入等待池中

7.知道哪些设计模式,单例模式是怎么实现的

我:大体分三类:创建型,结构型,行为型,各举了一个典型的例子.事后总结一下还可以分为类模式和对象模式.

单例模式:一个类只能有一个实例对象,没有公用的构造函数,只能通过静态方法获取唯一的对象实例,该对象由类自行创建,根据创建方式还可以分为懒式和饿式

8.知道基本类型吗

我:八种:int,short,long,float,double,char,boolean,byte,分别占4,2,8,4,8,1,1个字节

9.int和Integer区别,内存大小有什么区别

我:int是基本数据类型,Integer是类,它俩的默认值不同一个为0,一个为null.int直接存储数据,而Integer存储对象的引用

内存大小都是四个字节,因为Integer的实例变量只有int一个字段,所以是一样的

10.redis用过哪些功能,知道redis管道吗

我:用过缓存,计数器,消息队列,redis管道我不知道,面试官说是用来批量处理大量数据的,事后百度了一下,首先明确管道的概念

管道:服务器与客户端之间单向传输通道,一次只能有一端在向另一端传输数据

因此,当有大量数据需要传输时,为了节省时间,可以一次性打包一端到另一端的所有数据,一次性进行传输,避免频繁的发送、接收带来的网络开销,redis管道就是用了这个原理,怎么实现,具体可以参考:https://yq.aliyun.com/articles/617798

10.spring的IOC知道吗

我:spring IOC是控制反转,和DI依赖注入基本上是一个概念,只是看待的角度不一样,最主要的目的就是为了解耦,原理是将Bean对象的生命周期和对象的注入交给IOC容器控制实现,与正转不同,正转是主动创建对象,反转是被动等待容器的注入,并且对象的注入过程,在运行时才能决定注入何种类型的对象.更具体的概念也可以参考https://www.cnblogs.com/xdp-gacl/p/4249939.html

11.springMVC原理

参考:https://www.cnblogs.com/xiaoxi/p/6164383.html#4244638

12.HTTP协议(超文本传输协议)    当时只说了是应用层上的协议,忘了其他的...

  用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议

  特点:

  1. 简单快速
  2. 灵活:允许传输任意类型的数据对象
  3. 无连接:服务器处理完客户的请求,并收到客户的应答后,即断开连接
  4. 无状态:无状态是指协议对于事务处理没有记忆能力
  5. 客户端/服务器模式或者浏览器/服务器模式

报文格式:HTTP请求报文和HTTP响应报文,具体不展开,可以参考:https://www.cnblogs.com/zhuifeng/p/4072248.html

 

接着总结一下这次面试的收获吧!

  这次面试,面试官每个问题的开始都会给一个非常大的范围,这时需要自己总结相应的概念,在脑中先想好大概结构,一定要组织好语言,知道不一定会说,不要怕扩展,要能够对给的概念进行发散,这样才不会无话可说,能说的要多说,让面试官知道你的技术面很广,面试官也会在你说到某个关键点的时候,对你进行提问,这个时候,要多在脑袋里想与这个点有关的东西,不要急着回答,这样只会导致草草了之,要仔细思考后再回答,尽量答全,答多,让面试官知道你平时的积累

  总之,给自己加油!!!!!!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值