一面(45min)8:17 18:00
1. 面试官自我介绍。(说我电脑有杂音,听不清楚。一定要调好自己的电脑)
2. 代码题:十个子进程并发执行,父进程等待所有子进程结束状态之后,在返回结果。(30min)
3. 基础知识:
a. 你在编写Java代码的过程中遇到的死锁问题是什么样的
b. 线程池的执行流程,你能描述一下吗
c. string,stringbuilder, stringbuffer的区别,你能说一下吗
d. finally语句什么时候一定执行,什么时候不执行
e. Java创建对象的四种方式
f. 说一说你了解的排序算法的原理,以及它们的复杂度
ⅰ. 有没有使用额外内存的排序算法
g. 说一说数据库MyISAM和Innodb的区别
h. 索引失效的几种情况
i. 模糊匹配中like的通配符,你知道几个
j. 你在使用Java连接数据库的时候,遇到过什么问题
k. jvm调优策略你知道吗(回答不知道,就没继续问了)
4. 反问
------------------------
二面(1h)8.24 13:00
一、项目
介绍一下自己最近的项目,谈一下项目的流程:
用户是怎么登录的,主键是什么,用户名这一字段建索引了吗,为什么没有建立索引?(难道不应该建立索引吗,答因为用户量比较小,用不着建索引,浪费空间)
用户密码是怎么保存的,用户的状态如何保存呢?
你说你实现了图片的上传,HTTP是超文本传输协议,只能传输二进制文本,你是怎么传输图片的(base64将图片转换成二进制)。base64是自己写的转换处理吗(不是)那你调用了什么工具进行的转换?
二、八股
ArrayList和LinkedList都是读取100000000个对象,那个比较快?哪个占用内存比较多。(面试官想的是从体系结构角度来回答,考的是局部性原理)。
三、代码
将一个ip转换成一个int32位整数;写了一段代码,面试官好像没用过String的工具类,不是很熟悉,然后搜了一下才知道确实有这个用法,第一次写有思路,但是代码写的有点复杂,面试官要求能不能改一下。然后写了一个位运算的代码,死活调不通;然后就是面试官和我一起debug(笑)。最后找到问题了,原因是移位运算的优先级问题。真的是蠢死我了;
四、反问
我:面试官,咱们周六还上班吗(因为是周六进行的面试,我脑子一抽,就问了,笑鼠了)
面试官:(笑)当然是加班了,加班面试,你想来吗?
我:嘿嘿
-----------
流程已终止(不嘻嘻)