华为暑期实习面经合集和部分参考答案!
华为暑期实习招聘已经陆续开始了,还没投递的可以到官网进行投递。
投递后,通过筛选的会收到笔试通知,笔试是在每周三进行。
笔试共600分,100分即可参加面试,为了更好地帮助大家准备面试,这里给大家整理一下华为的面试高频问题。
下面从Java基础、项目问题、计算机基础和算法题几个方面分享。
Java基础
Java中的堆和栈,成员变量、静态变量的存放位置
Java中ArrayList和LinkedList的区别(高频问题)
Java中的异常体系
GCroot 有哪些?
多线程的创建方式有哪些?(超高频问题)
参考答案:当你回答完下面四种方法,可能会继续追问某个方法的具体实现等,比如线程池相关的问题。
(1)写一个类继承子Thread类,重写run方法
(2)写一个类重写Runable接口,重写run方法
(3)写一个类重写Callable接口,重写call方法
(4)使用线程池
说一下OOM,哪些区域可能产生OOM?
参考答案:在《深入理解Java虚拟机》中有提到,除程序计数器区域不会发生OOM其余区域都可以产生OOM。如堆、虚拟机栈、本地方法栈和方法区等
类加载机制和双亲委派机制。
wait和sleep的区别?
参考答案:
(1)sleep方法属于Thread类,wait方法属于Object类
(2)sleep方法暂停执行指定的时间,让出CPU给其他线程,但其监控状态依然保持在指定的时间过后又会自动恢复运行状态。
(3)在调用sleep方法的过程中,线程不会释放对象锁,而wait会释放对象锁。
final修饰类、变量和方法的区别
Sychronized和ReentrantLock的区别?
参考答案:这题也可参考《深入理解Java虚拟机》这本书472页。
相同点:
(1)都是可重入锁
(2)都保证了可见性和互斥性
(3)都可以用于控制多线程对共享对象的访问
不同点:
(1)ReentrantLock等待可中断
(2)synchronized中的锁是非公平的,ReentrantLock默认也是非公平的,但是可以通过修改参数来实现公平锁。
(3)ReentrantLock绑定多个条件
(4)synchronized是Java中的关键字是JVM级别的锁,而ReentrantLock是一个Lock接口下的实现类,是API层面的锁。
(5)synchronized隐式获取锁和释放锁,ReentrantLock显示获取和释放锁,在使用时避免程序异常无法释放锁,需要在finally控制块中进行解锁操作。
项目问题
谈论下简历中项目担任的角色、遇到的问题、团队交流
介绍自己的项目,项目的难点?
参考答案:对于这个问题,很多面试官都会提问。大家在做项目时一定要记录和思考自己项目中存在哪些问题,当遇到问题时自己是如何解决的,项目中最难的点是哪些模块,都可以在做项目过程中记录。
你的项目具体做了哪些改进,改进你是如何实现的?
项目做的测试,你对测试结果研究过指标吗
项目有没有什么感觉遗憾的地方?
项目中的一些细节?(建议大家好好看看自己简历上的项目)
计算机基础
TCP/IP五层结构,回答一下常见的协议。
TCP和UDP的区别
介绍常见的数据结构
介绍常见的排序算法,各个排序算法的时间和空间复杂度
参考答案:
介绍DFS和BFS算法
HTTP和HTTPS的区别?
cookie和session的区别?(高频问题)
参考答案:
- session 在服务器端,cookie 在客户端(浏览器)
- session 默认被存储在服务器的一个文件里(不是内存)
- session 的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id)
- session 可以放在 文件、数据库、或内存中都可以。
- 用户验证这种场合一般会用 session
Cookie 和 Session都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。
Cookie 一般用来保存用户信息 比如①我们在 Cookie 中保存已经登录过得用户信息,下次访问网站的时候页面可以自动帮你登录的一些基本信息给填了;②一般的网站都会有保持登录也就是说下次你再访问网站的时候就不需要重新登录了,这是因为用户登录的时候我们可以存放了一个 Token 在 Cookie 中,下次登录的时候只需要根据 Token 值来查找用户即可(为了安全考虑,重新登录一般要将 Token 重写);③登录一次网站后访问网站其他页面不需要重新登录。Session 的主要作用就是通过服务端记录用户的状态。 典型的场景是购物车,当你要添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了。
Cookie 数据保存在客户端(浏览器端),Session 数据保存在服务器端。
Cookie 存储在客户端中,而Session存储在服务器上,相对来说 Session 安全性更高。如果要在 Cookie 中存储一些敏感信息,不要直接写入 Cookie 中,最好能将 Cookie 信息加密然后使用到的时候再去服务器端解密。【摘自Guide哥】
线程和进程的区别?进程间的通信?
二分算法讲一下
TCP三次握手说一下过程?
死锁的必要条件,如何打破?
对Linux了解多少?
算法题
- 输出算法的最长递减子序列
- 两数相加
- 两个栈实现一个队列
- 合并有序链表
- 数组中的最长山脉
- 反转链表
- 有效的括号
- 求二叉树的深度
总结
通过阅读大量去年的实习面经,发现华为的暑期实习面试对MySQL和框架问的不太多。(但仍然建议正常准备!)
面试比较重基础,如Java基础、计算机网络和操作系统的掌握情况,以及对数据结构的了解情况。