暑期实习总结,面经凉经,Java研发,后端研发
零。 基本情况
渣渣研二,之前没有实习经历,从2月开始准备,2月底开始面试,因为项目论文问题,现在暂时告一段落也拿到了心仪的offer。虽然有点晚了,但还是来贡献一下面经(凉经)。
投了不少公司,BAT,快手,泰康,美团,字节,猿辅导,vmware,度小满,京东等等。有些收到了offer有些凉凉有些还在流程里。
面试次数技术面总共加起来大约能有20-30场,整体来说感觉强度还好。
从面试体验上,各家公司差不太多,基本中规中矩
印象比较深的是快手在面试前半小时会打电话向你确认,感觉挺好,而且快手真的快,老铁给力,半天时间完成2+1+口头offer,如果有老哥面试时间安排比较紧,希望考虑下可能连续面试带来的影响。
阿里面试体验良好,流程也不算慢,可能我运气好,部门给力,3+1仅8个工作日,hr面后等结果花了5天算最长了,但整个流程也不超过20天。
反而腾讯美团放风筝,2周一收线很难受,可能是我运气不好。
但各家面试官人都很好,hr也很客气,整体都感觉不错,没什么大坑。(放风筝就不算了,部门忙(我太菜)也能理解,虽然体验差点意思)
个人linux这块只会简单用用,所以没怎么问,技术栈基本都在Java这块所以Java问的比较多,分布式和框架也是了解不多,问了直接自爆,所以基本没问
也因为很多一些东西不了解,基本每场面试都有手撕代码环节(能有十分之一没有手撕?最多一场4道我佛了)
下面是一些我现在还能记得住的面试问题,希望对大家能有所帮助。
一。 Java基础相关
1. final关键字在方法上,类上,变量上的作用。什么类是final的(String,Integer等包装类),为什么。2. static关键字的作用,修饰方法,类,代码块,变量的区别
3. Integer自动拆箱装箱(可能和字面量类型一块考,比如包装类的对象和字面量相加有几次拆箱装箱)
4. String不可变的好处
5. 继承和多态,重载和重写(概念,特点,区别),以及final,private,static关键字在这四个中会起到什么影响(如final的类不能继承,final的方法不存在重写等等)
6. 了解什么设计模式,项目中使用了什么设计模式,详细介绍单例,手写单例(多次遇到!)
7. 浅克隆深克隆
8. 异常的种类
9. 反射获取类的方法有哪些,反射优缺点
10. 基类有哪些方法
11. equals和==和哈希
12. BIO、NIO和AIO
二。 集合相关
1. 介绍集合常用接口和类(List,Map,Set,Queue等等)(超多次遇到!)2. 详细介绍HashMap(超多次遇到!),特点(1.7和1.8区别,数组和桶,桶的数量和为什么2^n个,链表和红黑树,扩容机制等等),线程安全问题(头插法的问题,尾插法等等)
3. HashMap和HashTable区别(安全性,扩容,遗留类等等)
4. 想实现使用集合线程安全怎么办(线程安全的类,Collections.sychrolizedXXX方法,加锁等等)
5. ConcurrentHashMap特点,1.7和1.8区别,是否一定线程安全(否)
6. Set,Map,List区别
7. Vector,ArrayList,LinkedList区别,优缺点,何时使用(如增添多时,需要随机访问,需要线程安全等)
8. CopyOnWriteArrayList特点
三。 多线程并发
1. Synchronized和Lock区别(由什么支持,中断性,公平性,锁住的东西,释放等等)和底层实现(monitor机制,CAS和volatile)(超多次遇到!)2. volatile原理,修饰了volatile发生了什么(多次遇到!)
3. CAS原理和问题以及解决办法(多次遇到!)
4. Synchronized在不同位置使用的区别(方法上,代码块上,和static同时,锁住类等等)
5. wait和sleep和yield
6. wait和await
7. Executor的submit和execute区别
8. 4大类Executor
9. ThreadPoolExecutor的各个参数和不同种类
10. 使用过什么AQS里的,介绍一下
11. Thread和Runnable
四。 JVM虚拟机
1. 虚拟机结构(堆栈那些)和1.6、1.7、1.8老年代的区别(超多次遇到!)2. 对象四种引用类型和ThreadLocal
3. 垃圾回收器和工作原理(主要的那7种)(每种使用的回收算法,作用域,区别,特点等等)
4. 垃圾回收算法的原理
5. 类加载过程和机制(可能在原理的基础上,结合实际的例子考察,如各种地方加了各种修饰符后new一个子类或者父类输出什么)
6. 对象死亡的条件
7. OOM发生的位置和解决办法
8. JVM调优(很少出现)
9. 一般GC ROOTs有哪些
10. full gc触发条件
五。 操作系统
1. 死锁的条件,预防,检测回复,避免的方法,银行家算法2. 并发和并行
3. 线程和进程和协程
4. 虚拟内存(为什么要有虚拟内存,段,页,段页区别,页表页框)
5. 页面置换算法
6. 线程间通信和进程间通信
六。 计网
1. tcp和udp区别2. 三次握手四次挥手
3. 根据你学的网络模型说一下有哪些层(5层,7层,我是基于5层说的),每层有什么代表性协议
4. http和https区别,https加密方法
5. http的首部
6. 打开网页过程中发生了什么,使用了哪些协议
七。 数据库
1. ACID2. MVCC和隔离级别
3. InnoDB和MyISAM
4. Redis相关(速成可以借鉴https://baijiahao.baidu.com/s?id=1660009541007805174&wfr=spider&for=pc,但是吊打是不可能吊打的,只会被吊打)
5. 具体的一些使用,可能给题写代码
6. 索引的各种类型,好处,什么时候使用什么样的索引
7. B+树
八。 其他
1. 各种排序算法的复杂度,稳定性2. IOC和AOP
3. 红黑树
4. 大顶堆小顶堆
5. 大数据相关问题(可以借鉴https://blog.csdn.net/wypersist/article/details/80114709)
九。 手写算法
1. 二叉树的前中后遍历,递归迭代两种方式2. 单例的实现
3. 链表相交节点
4. 翻转链表
5. 删除链表倒数第N个节点
6. 青蛙每次跳3,4,5格,到最终目的地有几种跳法(跳超了也算),能不能跳到目的地(只能刚好跳到),最短跳几次
7. 两个字符串的最长相同子串
8. 生产者消费者
9. sql的,场景好像是找到每个部门工资最高的员工,打印员工名,部门名,部门id,薪水(数据在两张表上)
10. 字符串形式大数相乘
11. 两个栈实现队列,两个队列实现栈
12. 几道动态规划和DFS,BFS大概medium的题,忘了具体题目,给场景的,类似股票问题和岛屿问题那样
13. LRU缓存
14. 类似N皇后的问题,但是棋盘上已经有棋子了,判断是否会攻击,不会攻击输出所有的放棋子方式
15. 一些常规easy题,时间太久记不得了,大概整数翻转合并链表这个难度
十。 项目相关,因人而异
1. 简单介绍
2. 深入挖掘兴趣点
3. 最大困难,怎么克服
4. 最大亮点
5. 使用设计模式了吗?为什么?
6. 改进空间
十一。 总结
简历上写到的一定要会,都会问到,这次没问下次也跑不了。
是在遇到不会的,实话实说,谁还没点不会的东西,当然结果如何还是看考官心情,但我个人觉得诚实比硬挺或者瞎编好,毕竟问你的知识人家肯定很了解。
技术面的问题一般都比较基础,突击可以看看git上的cyc2018,真的不错,方向清晰。
算法方面,剑指是真的得会,剩下随缘刷吧,个人感觉动态规划比较多,同时多线程,sql也得会写。
hr面别怕,正常发挥就行,展现真实自己(当然只展现好的一面)。
最后祝福大家都能收到自己心仪的offer!