岗位:字节跳动广告数据平台Java后端研发实习生
面试轮次:一轮技术面
1.基础知识
-
TCP/IP四层模型
(1)应用层, 负责处理应用程序的逻辑,常用协议有HTTP协议、DNS域名服务、FTP协议等
(2)传输层,进行端到端的数据通信,常用协议有TCP协议、UDP协议
(3)网络层,IP数据包的封装和路径选择,常用协议有IP协议
(4)网络接口层 -
RPC协议
RPC 即 Remote Procedure Call,是一种计算机通信协议,该协议允许运行于一台计算机的程序调用另一台计算机的程序。
其与HTTP协议的相同点是底层都是基于socket进行实现,都可以实现远程调用,都可以实现服务调用服务。
其与HTTP协议的不同点是RPC要求服务的调用方和提供方都要使用相同的编程语言甚至是编程框架,而HTTP并不用关注语言的实现,服务提供方只需要提供restful风格的接口给服务调用方即可。
RPC协议较HTTP协议的优势在于不用进行臃肿的消息封装,基于原生TCP通信,速度快,效率高。 -
网络I/O模型,NIO、BIO
见百度日常实习一面面经 -
为什么会引发死锁问题?如何解决死锁问题?
死锁成立的四个条件:(1)存在互斥资源 (2)线程占有一个互斥资源并等待另一个互斥资源,等待的互斥资源被另一个线程所占有 (3)资源不能被抢占,资源只有在线程执行完后才能释放 (4)资源循环等待
在Java中我们可以使用reentrantlock来解决死锁问题,通过响应中断机制来强制获取锁或者设置获取锁的超时时间来解决。
2.Java基础
- 什么是JDK
JDK是Java开发工具包,包括Java运行环境(JRE),Java工具(javac,java,javap等),Java基础类库 - String类与StringBuffer类与StringBuilder类之间的区别
- synchronized的底层实现原理
Java中synchronized的实现原理与应用 - synchronized和reentrantlock的区别
(1)reentrantlock显示的获取锁、释放锁,synchronized隐式的获取锁,释放锁
(2)reentrantlock是在API的层面实现锁机制的,synchronized是在JVM的层面实现锁机制。
(3)reentrantlock可以实现公平锁
(4)reentrantlock使用的是乐观锁策略,synchronized使用的是悲观锁策略
(5)reentrantlock是lock接口的实现类,synchronized是Java的保留关键字
(6)reentrantlock可以让等待锁的线程响应中断或者设置获取锁的超时时间来解决线程的阻塞时间过长问题,synchronized不能进行这些操作,等待锁的线程会一直被阻塞。
3.数据库基础
- 当需要使用大量事务时使用哪种数据库存储引擎?
使用InnoDB,InnoDB通过事务提交、回滚、恢复等功能保证了事务安全,MyISAM不支持事务,也不支持外键。但MyISAM访问速度快,写效率比InnoDB更高
4.算法题
字符串字符的全排列(回溯算法的经典题)