非科班无实习无奖项渣硕,百度提前批,没有笔试,直接打电话来了,我一开始以为是骚扰电话,之前我都是直接挂的,这次就说要不接一次吧,结果人家说是百度,吓傻我了,当初提前批都是抱着试试的心态,根本没想着能被捞起来,而且我投了百度三个部门,面试结束完我都不知道人家是哪个部门的。人生第一次面试就给了百度。一共1h3min。
1,介绍项目(慕课网上找的秒杀项目,感觉挺low的,大佬勿喷)(第一次介绍项目,好久没看了,讲的有点磕磕绊绊的)
2,项目里redis用的哪种数据结构
3,前后端分离是什么意思
4,怎么防止页面连续点击按钮不停的提交(我说好像没有考虑这个问题,其实是我忘了应该)
5,如何面对高并发
6,如何防止超卖
接下来问基础
7,基本数据类型 和包装类
8,string 为什么不可变,final可以修饰什么
9,arraylist和linkedlist
10,array和arryalist
11,hashmap介绍一下,线程安全吗?怎么办?(期间问了,put操作,链表里判重是是根据key还是value,怎么判断的,我应该是回答错了,说根据value判断,应该是根据key判断,用equal判断,看来理解还是不深呀 特地找出来了源码看了一下, if (e.hash == hash && ((k = e.key) == key || key.equals(k))))为什么线程不安全(1.7扩容因为头插成环,或者put覆盖相同的元素啥的),怎么办?我就说了hashtable或者直接锁住,然后还可以用chp,我就主动介绍chp1.7和1.8的区别啥的,本来我想往synchronized那方面引,继而介绍锁升级,和lock的区别,然后volatile,threadlocal啥的(本来想介绍一下底层原理啥的)我就在那说,面试官也不打断我,我说一会他也不提问,我就没再说下去了,最后就问了一下chp和synchronizedhashmap有什么不一样的地方。
12,生产者消费者简单概括
13,创建线程的几种方式,为什么要用线程池
14,阻塞队列了解吗(我说具体那几个名称记不清了,不过我说我昨天写生产着消费者模式的时候用到了阻塞队列)
15,线程的状态
16,类的加载(加载,验证,连接,准备,初始化,我最后准备和初始化那个地方有点记不清了,毕竟好多天没看了,就说这个地方忘了),然后问了一下实例化和初始化啥区别
17,User user = new User()如何在内存里存
18,找一个数组中最大的元素,能说出几种方法(我说直接循环一次不就行了嘛,问我还有没有别的,我说python直接max,或者排序一下?
19,两个栈实现一个队列(问怎么保证元素是按照你想要的顺序放的??我就说难道并发情况下是加锁的意思嘛?面试官也没说啥,就下一个了)
20,字符串逆序,能想到几种方法,(最后经提示,主要想让我用栈)
21,智力题,2个人拿一百个东西,一个人一次能拿1-5个,有没有必胜的方法?(记得在哪里看过,但是忘了,没答上,我只记得要是最后能剩下6个,前面那个人就能赢,然后问我怎么才能剩下6个呢,我想了一下,放弃了,不会)
22,情景题,比如淘宝统计这个页面有多少访问量(没答上)
23,框架方面,如何统计controller层所有方法的调用时间(我不会)
24,sql方面,给了三个场景,口述该怎么写sql,一开始想复杂了,各种left join group by啥的 经提示发现 就是最简单的where 就行了 (基本没咋写过sql,面试官有提示还,勉强答对了)
25,事务的理解,可以用在什么地方(我说了acid啥的,然后是怎么实现的,想往日志和锁上引,结果面试官不往那方面走,就问了一下事务可以干嘛用。。。我说交易下单扣费啥的)
26,如果想查找一个文件,可以用什么方法,说出能想到的各种(我就想到了grep,后来试探性的问难道是bfs,dfs,还是b+树?因为我没用java查文件。。)
27,linux用过嘛?说说复制和重命名命令?最后我补充了一大堆之前记得命令(ls,grep,top,ps,pstree,tail,cat,more,less,chmod,cd,mv),主要就是为了看我用没用过linux。
28,了解的设计模式(我就主动说了双重校验的单例,加了volatile,锁住了类,双重判断啥的),别的设计模式因为还没复习,就说工厂和生产者消费者啥的,怕我说别的只知道名字,他一问具体我答不上来。
29,创建对象有几个方法(四种,问我反射和自省的区别,我说我没听说自省。。。)
30,死锁是啥(我说我昨天刚写了一个可以导致死锁的程序,就把那个程序主要过程说了一下,然后又主动介绍了一下活锁)
最后没有问网络,操作系统,和算法啥的,可能看我非科班吧,自我感觉答的不好。
最后我提问环节,我问了一下,像我这种非科班的该怎么提高自己呢,感觉问的我有好多不会的?感觉之前我一直都是面向面经复习,面试官说,有不会的很正常,可以上网查查java技术栈,做几个项目就会了,很简单的。。。
看来我欠缺的太多了。
希望一面能过,发个面经攒攒人品,要是百度能给我offer,我就直接结束秋招了。