暑期实习-百度.md

2018年04月14日

---

# 技术一面(60分钟)

> 基本全程在问项目(实验室项目、实习项目),根据项目中的知识点纵向展开追问,最后问了些有关线程和集合框架的内容

* 自我介绍

* 久其实习项目

 * 业务背景,自己所完成的功能,为什么要这么做?

 * 为什么使用HBase替换Oracle?

 HBase的表结构的设计

 rowkey是如何设计的?

 * 如何使用Kettle实现数据的ETL工作?

  数据格式之间是如何进行转换的?

  在Kettle的面板组件上通过js脚本实现数据的清洗、维度的统一、最后文本文件的导出

 * 如何使用MR将数据导入HBase?

 说一下具体的实现(简单的映射)

 * 感觉MongoDB也可以实现你的需求,为啥用HBase呢?

 * 这个数据的规模有多大呢?(几百G吧)

 * 这个MR批量数据导入的速度大概是多少呢?(几万条的话10分钟吧),离线的还是实时增量呢?

 * 导数据在运行的时候如何保证数据一致呢?

 * 为什么选取Phoenix作为中间引擎

 怎么对Oracle语句进行解析?

 说一下简单工厂的思想,画一下UML,是不是可以用语法解析树实现呢?

 怎样对可解析SQL语句的种类进行扩充?增加产品类

 * 是怎样保证数据的事务的?

 存在并发读写的情况怎么解决?

 一条记录的不同字段进行分次更新时可能遇到覆盖,怎么解决?(一次push一条记录,不存在这样的问题)

 * 对于数据倾斜是怎么解决的?

 说一下Phoenix的数据加盐的底层实现原理

 数据加盐有什么样的好处呢?

 * 二级索引有没有用到?

 如何构建的二级索引表呢?

 Phoenix的两种二级索引表有什么区别呢,优劣?

 二级索引的底层实现原理是什么?

 * 搭建的web平台的功能是什么?

 * 在久其都干了什么?简单介绍下日常工作

* 实验室项目

 * 介绍下项目背景,技术实现

 你在项目小组中是什么角色呢?

 * 影响最大化的算法的实现原理

 * 简单画一下项目的架构设计

 算法(graphx) -> jar -> hdfs

 jobserver承担着什么角色,如何对job进行调度?

 * 情感分析使用的什么分词工具

 怎么通过java调用python

 * 数据是怎获取的?

* 基础知识

 * 如果实现多线程呢?

 常用线程池

 不同线程之间的变量共享,theadlocal

# 技术二面(60分钟)

* 基础知识

 * JVM内存模型

 每个分区的作用

 哪些分区时共享的,哪些分区时私有的?

 垃圾回收算法(常见描述,对比优劣)

 判断一个对象是否可回收(判断引用类型)

 * 虚拟内存

 * JDK, JRE, JIT

 * 集合框架

 HashMap内部实现,存储于读取的内部流程

 ArrayList, LinkedList的内部实现原理与区别

 HashMap与HashTable之间的差异

 HashSet实现原理

 * 如何实现多线程

 创建线程

 线程共享变量

 线程安全

 线程池

 * 线程与进行的区别

 * TCP, UDP区别

 * TCP三次握手

 * 设计模式知道哪些?

 * 二叉树的前中后序遍历的区别

 * 数据库索引,B树介绍原理

 * 编译型语言和解释型语言的区别

 * HDFS的原理

 * 对数据仓库的理解

 * 目前有再看哪方面的技术书籍

 * 有什么想完善的技术栈

* 算法

 * 求二叉树的最短叶子节点的深度(手写)

 * 用栈模拟实现队列(说思路)

# 技术三面(40分钟)

* 线程池了解吗?

 线程池的分类

 有哪些常用的线程池

 如何构造一个自己的线程池

 当任务数量多于线程池中的线程数量时,应该怎么办?(消息队列)

* shell脚本说一下实现思路

 如果有任务执行失败了应该怎么办,在运行的时候而不是通过日志进行判断

* Hbase数据更新的原理,timestamp

* 在久其的主要工作,承担一个什么样的角色

* 实验室的项目中承担着什么样的角色

* 对百度有什么看法?

* 有什么想问他的?

你可能感兴趣的:(暑期实习-百度.md)