美文网首页
京东面经

京东面经

作者: ifcoder | 来源:发表于2017-05-26 18:58 被阅读223次

京东面经

​ 京东的面试大约是去年九月份,跟大部分的公司都差不多,一共有是三面,两个技术面,一个HR面。下面我主要分享下两个技术面的经历。
​ 总的来说一面的问题比二面的要简单一点,主要是考察的都是那些比较基础的知识。由于时间比较长,具体的问题的细节有些记不清了,不过总体来说就是考察了下面的知识点。

(1)设计模式 装饰模式和适配器模式的区别?

答:首先从两个设计模式的所实现功能开始讲起,装饰模式是为能够动态的扩展对象的功能,是继承关系的一个替代方案,提供比继承更多的灵活性。适配器就更好理解了,适配器是对其他对象接口的一种转换行为,将原接口转换为目标接口,以达到适配的效果。再从设计模式的实现方式来讲,具体的内容可以从这里得到,讲的很详细,本文中我就不再赘述了。

(2)Redis的数据类型有哪些?

答:这里被问到 Redis 的内容是因为我在简历中写到到了,对于应届生来说,多学习一点新技术是可以提高自己在面试中的优势的,可以展现自己比较好学,有较强的学习能力,给面试官留下一个好影响。像 Redis 我觉得就是一个比较好的学习目标。首先 Redis 非常火,各大公司都有用到,然后网上能找到好多学习的资料,并且学习起来比较简单,稍微有点基础的同学话一两小时就可以上手,再学一点实现原理方面的知识,应付简单的面试就已经足够了。这里京东问的就比较简单,Redis的数据类型常用的5种:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合),还有新加入的 Bitmaps 和 HyperLogLogs。

(3)HTTP请求的结构,消息报头传递了哪些信息?

答:HTTP是计算机网络里常考的知识,面试的时候被问到的概率很大,所以大家应该多了解一下。请求结构,消息报头,状态码都是会经常被问到的地方。HTTP请求由三部分组成,分别是:请求行、消息报头和请求正文。消息报头里传递很多信息,下面给出一个例子

POST /index.php HTTP/1.1         // 请求行
Host: localhost                  // 消息报头
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://localhost/
Content-Length:25
Content-Type:application/x-www-form-urlencoded

username=aa&password=1234        // 请求正文

消息报头的内容很多,不用全部都答出来,给出5个就差不多了。

(4)JUC包知道吗?AtomicInteger 是怎么实现的?

答:JUC是JDK1.5之后的java.util.concurrent新加入的并发包,提供了很多简单易用的并发工具类,AtomicInteger类就是JUC包席提供的为了解决多线程访问Integer变量导致结果不正确所设计的一个基于多线程并且支持原子操作的Integer类。AtomicInteger的实现原理比较复杂,是通过AtomicInteger类内部的Unsafe类型的变量来实现的。Unsafe类是一个可以执行不安全、容易犯错的操作的一个特殊类。提供了CAS操作(CompareAndSwap,比较并交换,是一个原子操作,CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。)。在AtomicInteger类内部对Unsafe类的CAS操作进行了封装,定义了一个compareAndSet方法

public final boolean compareAndSet(int expect, int update) {
    return unsafe.compareAndSwapInt(this, valueOffset, expect, update);
}

然后在每次对AtomicInteger类的实例执行修改操作时都会先执行compareAndSet方法,只有当compareAndSet执行成功时才会真正执行修改操作,否则就一直循环下去,AtomicInteger类中的代码如下:

public final int addAndGet(int delta) {
    for (;;) {
        int current = get();
        int next = current + delta;
        if (compareAndSet(current, next))
            return next;
    }
}

public final int incrementAndGet() {
    for (;;) {
        int current = get();
        int next = current + 1;
        if (compareAndSet(current, next))
            return next;
    }
}

public final int getAndAdd(int delta) {
    for (;;) {
        int current = get();
        int next = current + delta;
        if (compareAndSet(current, next))
            return current;
    }
}

(5) 最后一个是JVM相关的问题,JVM的垃圾收集器知道哪些,各自的特点是什么?

答:新生代有:Serial收集器,ParNew收集器,Parallel Scavenge收集器,老年代有Serial Old收集器,Parallel Old收集器,还有最经典也是最常用的CMS收集器。当然还有最新的G1收集器。
各自的特点的话就是从回收算法和GC时是否使用多线程来回答了。由于内容比较多,本文就不详细展开了,推荐大家到周志明大神写的《深入理解Java虚拟机》中寻找答案,非常棒的一本书,关于JVM的原理讲的非常清楚,Java程序员找工作必备。

​ 以上就是京东一面中涉及到的主要问题,讲的比较简单,大家要是没看明白的地方可以关注我们的微信号(关注公众号coderTO),在公众号里输入问题进行提问,我们会在24小时内回复您的消息,二面的面经会在下周三之前上线,谢谢大家的关注!

相关文章

  • 京东面经

    京东面经 ​ 京东的面试大约是去年九月份,跟大部分的公司都差不多,一共有是三面,两个技术面,一个HR面。下面我...

  • 京东面经

    作者:我要offer~链接:https://www.nowcoder.com/discuss/48520?type...

  • 京东面经

    昨天下午一点多我到达了京东的面试地点,这场面试算是我面试以来最大的一家公司,心里是有压力的,尽管一直告诉自己仅仅是...

  • 京东面经总结

    一面 css 两栏布局(多种方式) 水平垂直居中(多种方式) js 数据类型 typeof null为什么是obj...

  • 阿里美团京东面经

    阿里 直通车面试 介绍一下实习做的项目 线程池每一个参数的含义 Kafka讲一讲 并发工具包有哪些,具体怎么用 L...

  • 东面床

    故乡 那四间瓦房 东面床 梦魂牵绕的地方 整齐的被子 蓝色的纱帐 粉红的芳香 我累了 躺在床上 你去了哪儿 明明是...

  • 朋友篇<1>

    有些东面比金钱好,比如健康!! 有些东面批知识好,比如道德!! 有些东面比权力好,比...

  • 京东面试

    二面 项目相关 项目相关,提到水平分表2.怎么进行分表,是否存在数据迁移的问题3.怎么进行跨表查询(ES+hash...

  • “京北第一峰”方圆千里群山峻岭,尽收眼底!

    东猴顶是燕山群锋之首(比雾灵山高176.6米),是京北第一高锋。其上广袤生长着高山草甸,远远望去像猴头顶,位于东面...

  • 故·事——三十三剑客图(四)车中女子

    车中女子 ——唐·皇甫氏《原化记》 原文: 开元中,吴郡士人入京应明经。至京,闲步曲坊,逢二少年,着大麻布衫,揖士...

网友评论

      本文标题:京东面经

      本文链接:https://www.haomeiwen.com/subject/gobxfxtx.html