1.闲聊
流程:投简历,机试,性格测试,两轮技术面,HR面&部门总管面
目前状态:面完部门面,等待后续。。。希望通过。。))
2. 机试
机试就在牛客网上做,牛客网有一个华为的题库,可以提前去做做。我的建议是做一下前面的十几题熟悉一下输入输出就好了。题目的话其实我不太记得了,重点是字符串,我考了两题字符串,要熟悉字符串的基本操作。然后第三题就是一题比较普通的DFS,可以去LeetCode把各种常见的算法都稍微了解一下,做一两道例题,通过应该不难的。
3.性格测试
跟华为正式招聘的要求是一样的,可以百度一下,当时在知乎看到一个回答,大概了解一下华为喜欢哪些性格就好。最重要的还是不要前后矛盾。。
4.技术一面
1.两道编程题,树的数据结构+前序遍历,生产者和消费者的多线程模式(一开始用AtomicInteger,面试官说会自旋会导致CPU100,我说用sleep,面试官说不符合题意。最后我换成了synchronized,里面对锁使用wait跟notifyAll,解决了自旋的问题)
2.介绍自己,这几年的情况 (如实回答)
3.HashMap是如何存储数据的(我答了哈希数组之后,还把put的流程都讲了一遍。。)
4.Spring的主要特性(IOC跟AOP的概念)
5.对数据结构和算法的理解(把列表,链表,各种树,算法说一遍)
6.为什么需要多线程,如何理解的(答了充分利用CPU算力,然后问我如何利用,我说阻塞的时候可以切换到其他线程继续执行)
7.如何避免内存溢出(JVM参数是否合理,是否存在死循环创建了大量对象,是否存在内存泄漏,用完的引用要及时清理)
8.对软件开发流程的理解(答了IT项目管理跟UML的开发流程,获取需求,需求分析,概要设计,详细设计,编码,项目计划等)
总结:编程题有点难度,主要没想到会考多线程,不过还是写出来了,常见的多线程考题要熟悉。后面问的都比较浅显,所以就还好。
5.技术二面
1.平时项目是否有用到多线程(没有
2.如何实现线程同步(答了synchroni