博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
星环后台研发实习面经
阅读量:4073 次
发布时间:2019-05-25

本文共 2466 字,大约阅读时间需要 8 分钟。

约了下午两点的面试,两点零几分电话打过来了,还是很准时的。面试官的声音听起来很年轻随和,但是我还是很紧张。。毕竟是第一次技术面试的小菜鸡~总共面了40多分钟。

下面开始记录问题;

1. 自我介绍一下

2. 看你在..实习过,介绍一下你在那里的工作

3. 因为涉及到Hadoop,那你对Zookeeper了解吗?他是做什么的?

Apache ZooKeeper是由集群(节点组)使用的一种服务,用于在自身之间协调,并通过稳健的同步技术维护共享数据。ZooKeeper本身是一个分布式应用程序,为写入分布式应用程序提供服务。

ZooKeeper提供的常见服务如下 :

  • 命名服务 - 按名称标识集群中的节点。它类似于DNS,但仅对于节点。

  • 配置管理 - 加入节点的最近的和最新的系统配置信息。

  • 集群管理 - 实时地在集群和节点状态中加入/离开节点。

  • 选举算法 - 选举一个节点作为协调目的的leader。

  • 锁定和同步服务 - 在修改数据的同时锁定数据。此机制可帮助你在连接其他分布式应用程序(如Apache HBase)时进行自动故障恢复。

  • 高度可靠的数据注册表 - 即使在一个或几个节点关闭时也可以获得数据。

分布式应用程序提供了很多好处,但它们也抛出了一些复杂和难以解决的挑战。ZooKeeper框架提供了一个完整的机制来克服所有的挑战。竞争条件和死锁使用故障安全同步方法进行处理。另一个主要缺点是数据的不一致性,ZooKeeper使用原子性解析。

以下是使用ZooKeeper的好处:

  • 简单的分布式协调过程

  • 同步 - 服务器进程之间的相互排斥和协作。此过程有助于Apache HBase进行配置管理。

  • 有序的消息

  • 序列化 - 根据特定规则对数据进行编码。确保应用程序运行一致。这种方法可以在MapReduce中用来协调队列以执行运行的线程。

  • 可靠性

  • 原子性 - 数据转移完全成功或完全失败,但没有事务是部分的。

4. 用过Linux?讲一下常用命令? 

ls, rm, grep, cp, link

Java

1. HashMap是线程安全吗?为什么?HashTable的缺点?

不是。

HashMap在并发时可能出现的问题主要是两方面,首先如果多个线程同时使用put方法添加元素,而且假设正好存在两个put的key发生了碰撞(hash值一样),那么根据HashMap的实现,这两个key会添加到数组的同一个位置,这样最终就会发生其中一个线程的put的数据被覆盖。第二就是如果多个线程同时检测到元素个数超过数组大小*loadFactor,这样就会发生多个线程同时对Node数组进行扩容,都在重新计算元素位置以及复制数据,但是最终只有一个线程扩容后的数组会赋给table,也就是说其他线程的都会丢失,并且各自线程put的数据也丢失。

关于HashMap线程不安全这一点,《Java并发编程的艺术》一书中是这样说的:

HashMap在并发执行put操作时会引起死循环,导致CPU利用率接近100%。因为多线程会导致HashMap的Node链表形成环形数据结构,一旦形成环形数据结构,Node的next节点永远不为空,就会在获取Node时产生死循环。

其实是扩容时导致的环: 

2. 有没有效率又高又线程安全的集合类?

concurrentHashMap. 

3. 简单讲一下helloword.java从编译开始到在屏幕上出现的过程。

 

  • 源文件由编译器编译成字节码(ByteCode); 
  • 字节码由java虚拟机解释运行。因为java程序既要编译同时也要经过JVM的解释运行,所以说Java被称为半解释语言

4. Java中String类可以继承吗?子类可以修改父类的static方法吗?

不可以,因为是final的。

对于静态方法在子类中是不存在“重写”这一说的,就像前面我们提到的,用static关键字修饰的方法和变量都是属于类自己本身的,即使存在继承关系,子类并没有继承父类的static修饰的变量和方法,所以说即使子类和父类中都有同样的static方法和变量,他们是没有任何关系的,他们是相互独立的,他们是属于各自类本身的。因此也是不存在多态特性的

5. Java多线程开发?多线程的实现方式?

四种:继承Thread类、实现Runnable接口、实现Callable接口通过FutureTask包装器来创建Thread线程、使用ExecutorService、Callable、Future实现有返回结果的多线程。

6. 继承Thread类和实现Runnable接口的区别?

7. 你的项目用过Spring,讲一下spring AOP?

当我们需要为多个不具有继承关系的对象引入一个公共行为,例如日志、权限验证、事务等功能时,只能在在每个对象里引用公共行为。这样做不便于维护,而且有大量重复代码。AOP的出现弥补了OOP的这点不足。在面向切面编程AOP的思想里面,核心业务功能和切面功能分别独立进行开发 

然后把切面功能和核心业务功能 "编织" 在一起,这就叫AOP

8.用过哪些数据库?用过索引吗?了解底层细节吗?

9. 你对B+树有了解吗?

10. 讲一下Mysql事务?

11. B+树的好处是可以比较快速的查到某一项,可以用红黑树作为索引的数据结构吗?可以快速的找到某一新=项吗?讲一下大概的处理过程。

12. Java中创建对象有哪几种方式?

算法:

1. Fibonnacci序列?效率比较慢的方法,还有什么问题?效率更快的?

我说了循环。递归,可能OOM.更高效的没想到

递归的时间复杂度,循环的时间复杂度

2. 二叉树寻找最大和的路径(输出到叶子节点最大的值)

我说了DFS,然后回溯,用一个Stack存节点,然后问我时间复杂度,O(logn)?.然后问我优化空间

最后就是问我有什么问题要问吗,我随便问了两个。1.如果去实习的话会做什么项目,2.小组的技术栈3. 你觉得工作中或者根据今天我的表现建议我学习一些什么东西?

转载地址:http://fifni.baihongyu.com/

你可能感兴趣的文章
git、Gradle、NDK、依赖及补充
查看>>
UIWindow UIView UILable UIButton
查看>>
L1 - bundle id、Xcode hello world Demo
查看>>
charles mock数据
查看>>
L2 - 签名、自动化打ipa文件、证书
查看>>
L3 appium架构、git使用
查看>>
Python
查看>>
1、Objective-C简介
查看>>
00 vim 简明教程
查看>>
C语言的一些理解
查看>>
C语言头文件的作用
查看>>
郭天祥自学单片机的方法
查看>>
Printf的格式符记忆
查看>>
华清老师对于编程学习方法的一些描述
查看>>
我对指针的一些总结
查看>>
对于字符串的引用的写法的一些说明(区分字符串常量和字符数组)
查看>>
用指针做函数输入形参的原因!是因为这样能在函数中改变实参的值,现在才明白。
查看>>
C语言的一些注意细节
查看>>
关于main函数的返回值,这个讲得很好!
查看>>
SDK 就是 Software Development Kit 的缩写,中文意思就是“软件开发工具包“
查看>>