Base:
本人投递的是后台开发岗位,调剂到数据开发岗位,京东的数据开发也做后台开发方面的工作,还包括算法、策略、数据挖掘和数据平台搭建之类的职责。面试内容基本只会问简历上的,在此基础上再去考察岗位职责相关的内容。
数据库部分:
1.常见的数据库类型?
答:InnoDB、MyISAM、Memory
2.你刚才提到了InnoDB,那么它和其它存储引擎有那些差别?
答:对比MyISAM,InnoDB支持行级锁并发性能更好、支持事务、支持外键、多并发版本控制和崩溃恢复。对比Memory,InnoDB的数据存储在磁盘中适合持久化数据存储,Memory的数据存储在内存中,适合临时数据存储。
3.InnoDB的架构是怎样的?(经面试官提示,他想问的应该是InnoDB的索引结构,因为举例了红黑树之类的)
答:基于B+树,即多路平衡查找树,主要特点是:①数据记录只存储在叶子节点中,非叶子节点只存储索引信息②叶子节点之间通过指针相连形成双向循环链表:便于范围查询③高度平衡:所有叶子节点在同一层,保证了查找效率,
4.了解事务的ACID吗?
答:A是Atomicity,事务的原子性。C是Consistency,事务执行前后,数据库状态保持一致。I是Isolation,并发事务相互隔离、互不干扰。D是Durability,事务提交后,数据永久保存。
5.事务的隔离级别有哪些?分别解决了哪些问题?
答:当数据库上有多个事务同时执行的时候,就可能出现脏读(dirty read)、不可重复读(non-repeatable read)、幻读(phantom read)的问题,为了解决这些问题,就有了"隔离级别"的概念。
SQL标准的事务隔离级别由低到高有4个,分别是:
①读未提交(read uncommitted),是指一个事务还没提交时,它做的变更就能被别的事务看到。
②读已提交(read committed)是指,一个事务提交之后,它做的变更才会被其他事务看到,因此解决了脏读问题。
③可重复读(repeatable read)是指,一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。当然在可重复读隔离级别下,未提交变更对其他事务也是不可见的。 解决了脏读和不可重复读的问题。是默认隔离级别。
④串行化(serializable ) ,顾名思义是对于同一行记录,"写"会加"写锁","读"会加"读锁"。当出现读写锁冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。解决了脏读、不可重复读和幻读的问题,但并发性能差。
6.MySQL与Java结合的常用指令有哪些?
(我是从MyBatis的使用角度回答的,但不知道为啥和AQS记串了,属于是瞎答)
以下为deepseek的回答:
在Java中操作MySQL通常通过JDBC 或ORM框架实现。核心步骤包括连接数据库、执行SQL、处理结果。常用指令有:
- JDBC API :
DriverManager
,PreparedStatement
,ResultSet
。 - SQL语句 :增删改查及事务控制(
BEGIN
,COMMIT
)。 - 优化手段:预处理防注入、连接池管理、批处理。
此外,实际项目中常用MyBatis 或Spring Data JPA简化开发。
7.MySQL进行表连接使用的JOIN有哪几种?
答:内连接一种inner join,外连接三种分为left、right、full join。
8.MySQL有哪些子查询的方式?
答:①where in②from join③select子句中④exists和not exists。
Hadoop方面:
1.有哪些实现数据存储、处理和查询的常用组件?
答:(因为确实只是在实验课上用过,所以大致介绍了一下实验内容然后回答不了解)
以下为豆包的回答:
以下是 Hadoop 常用组件及其支持的增删改查功能,简化说明:
一、增(数据写入)
- HDFS:分布式文件存储,支持上传文件(类似"复制粘贴")。
- HBase:NoSQL 数据库,用
put
命令写入单行数据(按行键+列族存储)。 - Kafka:消息队列,支持实时写入数据流(常用于数据管道)。
二、删(数据删除)
- HDFS:直接删除文件或目录(类似操作系统的删除)。
- HBase :用
delete
删列,deleteall
删整行。 - Hive :支持
DELETE
语句删除表中数据(需开启相关配置)。
三、改(数据修改)
- HBase:用
put
覆盖旧值(新版本数据会保留,非直接修改)。 - Hive:用
UPDATE
语句修改数据(有限支持,通常批量处理)。
四、查(数据查询)
- Hive:用类似 SQL 的 HiveQL 查询,适合离线分析。
- Impala/Presto:用 SQL 实时查询,低延迟(Impala 基于 Hadoop,Presto 独立)。
- HBase:用
get
查单行,scan
扫描全表(需指定行键或过滤器)。 - Pig:用 Pig Latin 脚本处理数据(如过滤、聚合)。
总结:
- 存储核心:HDFS(文件)、HBase(NoSQL)、Hive(数据仓库)。
- 实时查询:Impala/Presto(SQL)、Kafka(流处理)。
- 离线处理:Hive、Pig、MapReduce(基础但较少用)。
操作系统方面:
1.查看正在运行的进程有哪些方式?
答:静态查看有ps指令,动态实时监控有top指令,通过文件系统查看/proc文件夹,此外还有w指令显示当前登录用户及正在执行的进程。
2.如果想要定时执行一个Java任务,有哪些方法?
答:这个真不会。
以下问豆包回答:
**在linux中,**可以使用如下指令:
- 周期性任务 → cron (简单直接)或 systemd.timer(服务化管理)。
- 一次性任务 → at。
- systemd 环境 → 优先用 systemd.timer,便于与其他服务统一管理。
**在Java中,**可以使用Timer类定时执行重写run方法的TimerTask实例。
**在Spring中,**可以使用在定时任务的方法上方添加@Scheduled注解来实现定时任务,用@EnableScheduled注解启用这个类的Spring定时任务功能。
3.有哪些常见的文件描述符?
答:0标准输入,1标准输出,2标准错误。
计算机网络方面:
1.计算机网络的体系结构有哪几个层次?每个层次分别有什么作用?
答:OSI七层模型和TCP/IP的四层模型以及五层体系结构。五层体系结构分别为:
- 应用层:作为网络服务和最终用户之间的接口。它提供了一系列供应用程序使用的协议,使用户的应用程序可以访问网络服务。
- 传输层:提供进程到进程的通信管理,这一层确保数据按顺序、无错误地传输。
- 网络层:负责数据包从源到目的地的传输和路由选择,包括跨越多个网络(即互联网)。它使用逻辑地址(如 IP 地址)来唯一标识设备。路由器是网络层设备。
- 数据链路层:确保从一个节点到另一个节点的可靠、有效的数据传输。交换机、网桥是数据链路层设备。
- 物理层:电缆、光纤、无线电频谱、网络适配器等。
2.有哪些常见的网络传输协议?
答:
文本传输协议:HTTP、HTTPS;
文件传输协议:FTP、TFTP
邮件传输协议:SMTP、POP3、IMAP
加密远程登陆:SSH
域名解析:DNS
3.http协议在哪一层?
答:应用层,是用于网页传输的协议。
4.http协议和https的区别是什么?
答:
- HTTP 是明文传输,而HTTPS 通过 SSL\TLS 进行了加密
- HTTP 的端口号是 80,HTTPS 是 443
- HTTPS 需要到 CA 申请证书
- HTTP 的连接简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。
5.DNS有什么用?是怎么工作的?
答:DNS解决的是浏览器访问网址之后的域名和IP地址的映射问题。
- 首先查找浏览器缓存
- 然后查找操作系统缓存,即Host文件
- 接着查找本地DNS缓存
- 然后向根DNS申请,得到对应的顶级域DNS服务器,进行递归查找,得到对应的权威DNS服务器,进行查询。
执行上述步骤直至查找到对应IP地址,由本地DNS解析器将其返回给浏览器,并将该IP地址缓存在本地。
6.家里路由器旁边的"猫"是什么设备?
答:从计算机网络角度,"猫" 是调制解调器(Modem),是家庭网络中连接互联网的核心设备,主要功能是实现信号转换,将ISP传输的模拟信号或光信号转换成路由器和计算机能识别的数字信号,这个过程叫解调,反之叫调制。属于计算机网络五层体系结构的物理层的设备。
Java问题:
1.Java中客户端和服务器用什么类进行通信?
答:基于TCP协议的情况下,使用Socket和ServeSocket类实现客户端-服务器通信。
编程语言相关:
1.平时开发比较常使用哪些语言?
2.python不适合在哪些场景使用?
答:以下是豆包的回答
- 对执行速度要求极高的场景:Python 是解释型语言,执行速度相对较慢,像高性能计算、大型游戏开发等场景,C、C++ 更合适。
- 资源受限的嵌入式系统:Python 运行时占用资源较多,在资源受限的设备上运行困难,而汇编、C 这类低资源占用的语言更适合。
- 移动应用开发:Python 在移动应用开发上缺乏完善的生态系统和工具,开发效率不如原生开发语言(如 Java、Kotlin 用于安卓,Swift 用于 iOS)。
闲聊:
1.现在人在深圳吗,实习地点在北京可以接受吗?
2.你是哪里人啊?(闲聊)
岗位介绍:
介绍了一下北京岗位的职责,以及广州和安联合资公司的岗位职责。
反问:
1.京东的投递情况是怎么样的,为什么会把我岗位调剂到数据开发工程师:
答:京东的数据部门也有后台开发的需求,此外还有算法和策略即数据挖掘方面的需求。
2.有哪些建议:
答:①夯实计算机基础,虽然在实际工作场景中可能用到的不多,但是有必要深入了解以扎实技术。②开发语言方面工作中用python很少,Java方面深入学习对未来做大数据开发方面也有帮助。