蚂蚁金服- 暑期实习- 一面面经
目前已经过了二面,再等hr面了。
过两天更新二面。
一面(1h)
如何让一个线程优雅地退出
外部线程调用该线程的interrupt()方法
注意:如果线程处于阻塞状态,只会抛出interrupt异常,而不会设置中断状态,所以捕获异常后要做相应处理
检测到中断状态,作相应处理,(释放资源,或者进行完当前任务)
面向对象,你自己是怎么理解的(开始说的很书面话,然后让我脱离教科书,就谈谈自己的理解就行)
设计模式知道哪些
自己在项目中,设计模式使用到的有哪些
多线程编程,你的项目中有哪些运用到了
mysql索引,哪些该建索引,哪些不该建索引
那你自己在使用的过程中,对索引有哪些考虑呢?
服务器端出现CPU100%,如何去排查问题
linux的命令,你自己使用过的有哪些
你知道的通信协议有哪些?
tcp和udp的区别
http和https的差别
说几个你自己知道的加密算法(只让说了名字,没深入问)、
如何理解http和websocket的区别
websocket持久性连接,连接时间可以好几天
http是客户端发起请求,服务器端应答请求,客户端主动,服务器端被动
websocket服务器端和客户端都能主动发起交易
在websocket前的解决方案:
1)Ajax轮询怎么实现的?
ajax轮询模拟长连接就是每隔一段时间(0.5s)就向服务器发起ajax请求,查询服务器端是否有数据更新。
客户端:有没有新消息
服务器端:没有。。(第一次http结束)
客户端:有没有新消息
服务器端:有,xxxxx (第二次http结束)
客户端:有没有新消息
服务器端:没有。。 (第三次http结束)
客户端:有没有新消息
服务器端:没有。。 (第四次http结束)
。。。。。。
其缺点显而易见,每次都要建立HTTP连接,即使需要传输的数据非常少,所以这样很浪费带宽;同时,这个过程是被动性的,即不是服务器主动推送的。
2)长连接(long pull)
客户端:有没有新信息(Request)–第一次http请求开始
服务端:没有信息,不作回应(时间一直的流逝。。。一直保持http连接, 当等到有消息的时候)
服务器端:给你xxxx(Response)–这时,第一次的http请求获得想要的结果,然后还要发起第二、三。。次http请求
客户端:有没有新消息(Request)–第二次http请求开始
。。。。。
其缺点也是显而易见的,同ajax轮询一样,也是每次都要建立HTTP连接,也都是被动的。而且这种方法对服务器的并行要求比较大,因为在没有消息的时候,连接照样保持,而这时需要其它信息是又要建立新的连接(就连接保持中)
session和cookie分别是什么?
重要的数据可以放cookie吗
线上问题,你遇到过什么?具体自己是如何去排查问题的?
说下乐观锁和悲观锁
CAS中可能出现的ABA问题讲讲
java和C++的内存管理上有哪些不同
垃圾回收算法具体讲一下
sql 里面的group by是什么作用
你的实习经历,你自己有哪些收获呢
如果你和你老师有意见上的不同,你会怎么去处理
如果是在工作当中和领导意见不同呢?
指针和引用的区别
指针是一个变量,其中存放的内容是一个内存地址
引用是地址的别名,在java中一般指向对象内存地址的头部
指针可以随意操作,比较加减来移动指针,但引用不可以,引用只能更改指向其他对象地址
引用不像指针一样操作灵活,但是保证了安全性。
你最近在看什么书呢?(我答了 高性能mysql,然后就问我具体有哪些收获)
附加的3道笔试题,给了1小时时间(因为我笔试做的太差,所有附加了题)
1.给出一个数和一个数组,求数组中连等的子集合。
比如7以及数组[1,4,2,3,4,3,6,7,8,9],输出为[1,4,2],[3,4],[4,3],[7]
2. 两个线程交替打印出a1b2c3.....z26
3. 用一条sql语句查询出每个资产余额都大于60元的人员姓名(假设表为balance)
表中信息如下
name asset . amount 刘备 支付宝 61 刘备 信用卡 55 张飞 支付宝 78 张飞 信用卡 62 关羽 支付宝 59 关羽 信用卡 90
select name from balance group by name having min(amount) > 60;