面试

头条后台开发面经

谁说胖子不能爱 提交于 2020-12-05 02:20:31
一面(纯技术面) 队列的实现,需要注意的地方 快速排序的实现、时间复杂度分析 B树和B+树的区别、应用 HashMap的实现,扩容机制,扩容时如何保证可操作 Redis扩容机制(渐进式单线程扩容 ) Spring AOP的原理 Spring IoC的原理,如何实现,如何解决循环依赖 两线程对变量i进行加1操作,结果如何,为什么,怎么解决 CAS概念、原子类实现原理 synchronize底层实现,如何实现Lock AQS有什么特点 可见性的底层原理 JVM内存模型,为什么要这么分 本地方法栈和虚拟机栈的区别 如何查看JVM参数是否正确 TCP三次握手,如何实现 Socket编程底层如何实现 select和epoll的区别 算法:蛇形打印二叉树 二面(项目面+技术面) 项目详聊(问了很多、很细) Innodb多列索引 MySQL默认事务隔离级别,不可重复读是什么意思,如何实现可重复读 Redis服务端有20GB内存,现在要缓存200GB数据,如何处理 算法:给出[[1, 2], [3, 5], [8, 8], [15, 16], [32, 38]],求间隔 什么是堆,画了个二叉树问是否符合最小堆的结构,然后根据图叙述堆排序的详细过程。 TCP与UDP的区别,还有哪些其他的传输层协议,用来做什么的。 进程与线程的区别 ,你是怎么理解这两个概念的(快被问烂了的问题……)

阿里中间件研发面经

ぃ、小莉子 提交于 2020-12-05 02:00:18
阿里中间件研发面经 研发工程师(Java) 我参与了阿里巴巴中间件部门的提前批面试,一共经历了四次面试,拿到了口头offer。这是我的 面经,在这里分享给大家。 一面: 1 自我介绍 2 项目中做了什么,难点呢。 3 Java的线程池说一下,各个参数的作用,如何进行的。 4 Redis讲一下 5 分布式系统的全局id如何实现。用zookeeper如何实现的呢,机器号+时间戳即可。 6 分布式锁的方案,redis和zookeeper那个好,如果是集群部署,高并发情况下哪个性能更好。 7 kafka了解么,了解哪些消息队列。 8 想做业务还是研究。 9 然后出了一道题,linux的访问权限是rwx格式的。使用一个类支持访问权限的增删改查,并且注意使用的数据格式以及方法效率,规范。给了一个多小时写题。 耗时将近30分钟。 二面: 1 介绍你做的项目和其中的难点。 2 上次面试官问的问题,反射的作用是什么。 3 数据仓库,多线程和并发工具等。 4 私有云,docker和k8s等。 5 了解哪些中间件,dubbo,rocketmq,mycat等。 6 dubbo中的rpc如何实现。 7 自己实现rpc应该怎么做 9 dubbo的服务注册与发现。 10 听说我是非科班,于是问了些排序算法 耗时将近30分钟。 三面: 三面不是面试,而是笔试,耗时三个小时,考的是Java核心的基础

今日头条研发面经

别等时光非礼了梦想. 提交于 2020-12-05 02:00:01
今日头条研发面经 今日头条上海 后台开发工程师 今日头条 后端研发工程师 找牛客大佬要了白金码,跳过死亡笔试,直接视频面,从3点开始,断断续续到晚上8点结束。 每个面试官给我的感觉都是怎么这么高冷啊。 1一面 一面: 1 写一个题,找一个无序数组的中位数 2 写了个快排,然后让我找到无序数组第k大的一个数,我说先排序再找,实际上可以用快排的partition函数。 3 快排的时间复杂度,最坏情况呢,最好情况呢,堆排序的时间复杂度呢,建堆的复杂度是多少,nlgn。 4 操作系统了解么,Linux和windows 5 说说Linux的磁盘管理,一脸懵逼 6 Linux有哪些进程通信方式,五大件 7 Linux的共享内存如何实现,大概说了一下。 8 共享内存实现的具体步骤,我说没用过 9 socket网络编程,说一下TCP的三次握手和四次挥手,中间网络不好,面试官都没听清楚,很尴尬 10 跳过网络,问了项目的一些东西 11 问我如何把docker讲的很清楚,我从物理机,虚拟机到容器具体实现稍微说了下。 12 问我cgroup在linux的具体实现,不会。 13 多线程用过哪些,chm和countdownlatch在实习用过 14 不得不吐槽下今天牛客的视频网速,不知道啥原因卡的一比,明明下载网速很正常啊,牛客视频每秒才20k。。疯狂掉线搞得很蛋疼。 二面: 1 自我介绍 2

斗鱼研发面经

你。 提交于 2020-12-05 01:40:05
斗鱼研发面经 斗鱼武汉 Java开发工程师(大数据方向) 1 一周前斗鱼约了面试,公司就在学校旁边,于是过去面试,2点到5点半。 现场面试体验还不错,办公室挺拥挤的,面试比想象中要难。 先做了一套笔试题,然后三轮面试。 笔试: 1 基本数据类型和引用数据类型的区别 2 静态成员变量和非静态成员变量的区别 3 Java的接口,抽象类,和普通类的区别。 4 字节流和字符流有什么区别,分别用哪个接口 5 忘了 6 两个线程A,B。A要等待B运行完(或者A超时10秒)再运行 7 两个表A,B。A表有姓名,课程,得分,B表有课程,比重。 要求班里课程得分*比重总和在60-70,71-80,81-90,90-100的人所占全班的比例。 8 JS题 9 一个字符串,前半段反转,后半段也反转,然后输出。 10 一个无序数组,变成有序数组,并且删除重复数字 一面: 1 项目 2 为什么用chm 3 hashmap的线程安全问题 4 线程池结构,阻塞队列看过源码吗,array阻塞队列的原理,怎么实现的,这边的put答错了,事实上不用移动数组。 5 jmm内存模型了解过吗,说了工作内存和主内存,顺便说了volatile,不能保证线程安全。 6 spring说一下,老样子ioc和aop,问我bean为什么是单例的,是否线程安全,怎么让接口指定实现类。bean容器的实现原理,解析过程,问我这块是在哪里看的

携程&拼多多研发面经

南笙酒味 提交于 2020-12-05 01:00:00
携程&拼多多研发面经 1 携程面经是参考我同学的面试经验写出来的,因为面试官的问题可能不怎么更新,所以有缘的小伙伴看看,说不定就面到了。 携程面经 一面: 租车事业部 1 项目讲一下 2 多线程并发读取数据库可能出现的问题,如何解决线程数不够带来的问题,我说了几种方式,一个是使用缓存,一个是使用数据库连接池,他问我能不能借助类似IO处理的方式来优化,于是我说了使用AIO异步处理。他问我有没有用过,我就大概说了一下。 3 Java的数据结构了解哪些,说一下linkedlist和ArrayList的区别,如果使用它们来存储字符串,哪个更合适呢,如果要进行字符串的增删改查和拼接操作呢。 4 多个string常量相加会有什么问题,我说会产生多个string,其实是会使用stringbuilder进行append操作,每次相加都会新建一个stringbuilder对象,比较低效。 而使用stringbuilder对象直接append则只有一个stringbuilder对象。 当使用for循环时,string相加会优化成一个stringbuilder进行append操作。 5 map是否线程安全,为什么不是呢,如何实现线程安全呢,除了用chm和hashtable还有别的方式吗,我说自己实现一个map然后重写get和put方法,加synchronized即可。 6 说几种你了解的设计模式

两难!到底用Apache BeanUtils还是Spring BeanUtils?

ε祈祈猫儿з 提交于 2020-12-05 00:56:31
点击上方“ 方志朋 ”,选择“ 设为星标 ” 回复” 666 “获取新整理的面试文章 在我们实际项目开发过程中,我们经常需要将不同的两个对象实例进行属性复制,从而基于源对象的属性信息进行后续操作,而不改变源对象的属性信息,比如DTO数据传输对象和数据对象DO,我们需要将DO对象进行属性复制到DTO,但是对象格式又不一样,所以我们需要编写映射代码将对象中的属性值从一种类型转换成另一种类型。 对象拷贝 在具体介绍两种 BeanUtils 之前,先来补充一些基础知识。它们两种工具本质上就是对象拷贝工具,而对象拷贝又分为深拷贝和浅拷贝,下面进行详细解释。 什么是浅拷贝和深拷贝 在Java中,除了 基本数据类型之外,还存在 类的实例对象这个引用数据类型,而一般使用 “=”号做赋值操作的时候,对于基本数据类型,实际上是拷贝的它的值,但是对于对象而言,其实赋值的只是这个对象的引用,将原对象的引用传递过去,他们实际还是指向的同一个对象。而浅拷贝和深拷贝就是在这个基础上做的区分,如果在拷贝这个对象的时候,只对基本数据类型进行了拷贝,而对引用数据类型只是进行引用的传递,而没有真实的创建一个新的对象,则认为是浅拷贝。反之,在对引用数据类型进行拷贝的时候,创建了一个新的对象,并且复制其内的成员变量,则认为是深拷贝。 简单来说: 浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝

算法题——操作数组

|▌冷眼眸甩不掉的悲伤 提交于 2020-12-04 23:54:27
题目:给定一个正整数数组A,长度为n,下标范围是[0..n - 1]。给定非负整数数组,query[]代表操作。如果query[i] = x,表示第i次操作把A数组中A[x]右边小于它的元素设置为0。即 for ( int j = x + 1 ; j < n; ++j) { if (A[j] < A[x]) { A[j] = 0 ; } } 问按顺序执行所有query数组的操作后,A数组最终包含的值? 例如A[] = {4, 3, 4, 3, 2}, query[] = {2, 1}时 第一次操作后,A[] = {4, 3, 4, 3, 0} 第二次操作后,A[] = {4, 3, 4, 0, 0}。 分析:仔细想象, 其实操作顺序不重要,即任意两个操作都可以交换顺序(为什么?)。 所以我们简单地从左到右操作,并且记录下之前A值的最大值m即可。如果当前A[i]小于m,则A[i]最终会变为0。 注意,我们并不知道query数组是否包含没有意义的重复值,这里需要小心处理(或者简单地加入set。) 代码: void solution ( vector < int > &A, vector < int > &query) { sort(query.begin(), query.end()); for ( int i = 0 , m = 0 , j = 0 ; i < A.size(); +

【面经】超硬核面经,已拿蚂蚁金服Offer!!

孤街醉人 提交于 2020-12-04 17:00:48
点击上方蓝色“ 冰河技术 ”,关注并 选择“设为星标” 持之以恒,贵在坚持,每天进步一点点! 作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。 自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。 为使更多童鞋受益,现给出开源框架地址: https://github.com/sunshinelyz/mykit-delay PS: 欢迎各位Star源码,也可以pr你牛逼哄哄的代码 。 写在前面 很多小伙伴都反馈说,现在的工作不好找呀,也不敢跳槽,在原来的岗位上也是战战兢兢!其实,究其根本原因,还是自己技术不过关,如果你技术真的很硬核,怕啥?想去哪去哪呗!这不,我的一个读者去面试了蚂蚁金服,HR小姐姐让他下周入职! 注:二狗子,我的一名忠实读者,很勤奋,我的每一篇文章他都是必读的,后来由于经常交流技术,成为了比较熟悉的网友,二狗子也是我给他起的外号,哈哈。这次他拿下了蚂蚁金服,跟我说:面试中大部分的问题我公众号中的文章都有涉及到。哈哈哈,很开心的有木有?! 关注 冰河技术 微信公众号,学习更多超硬核技术!! 介绍二狗子 今年的疫情期间,二狗子就一直在家复习,学习各种知识技能。我也是在疫情期间,开始发力写公众号。就在这时,二狗子关注了我的公众号,我每更新一篇,他便读一篇,遇到了问题

Java程序员从京东、阿里、携程面试回来,已成功拿到京东offer

旧街凉风 提交于 2020-12-04 15:55:04
阿里巴巴(一面) 阿里找了一个北邮学长的内推,准确来说应该是直推,是他帮我直接录的简历,他本科进的阿里蚂蚁金服,厉害吧?是真的佩服。第一次在官网上填资料,想想马云有多出名,想想蚂蚁金服这样的顶级技术,有些兴奋,有些期待。 录完简历后等待简历评估,原来,找内推不一定能得到面试机会,能不能得到面试机会要经过简历评估(我这才知道,原来内推免笔试可不是那么容易的),毕竟内推能免去在线笔试直接面试,互联网第一梯队像百度、阿里,腾讯的笔试真的很有难度,做过前几年这些公司的笔试题,真的太难了。在阿里的校招群里看到很多研究生研究算法,前端,Java研发的,简历评估后直接变成已回绝没有得到面试机会。心想,我一个研究生,Java研发都是自学的,项目都是自己设计的需求,简历也就一张纸,究竟能不能得到面试机会? 填完资料的一个星期后收到了支付宝的面试电话,突然变得好紧张,居然得到了面试的机会。 自我介绍 简单的介绍一下你的项目 一个有500个用户的广播系统,你怎么做性能优化 当用户提交请求后,却立即按撤回按钮,涉及性能的数据落地问题你怎么处理 Lucene底层实现原理,它的索引结构 ibatis跟hibernate的区别 ibatis是怎么实现映射的,它的映射原理是什么 Java I/O底层细节,注意是底层细节,而不是怎么用 你对mysql有什么了解 说一下数据库事务的四个特性

到底什么是重入锁,拜托,一次搞清楚!

南笙酒味 提交于 2020-12-04 14:20:34
相信大家在工作或者面试过程中经常听到重入锁这个概念,或者与关键字 synchrozied 的对比,栈长面试了这么多人,80%的面试者都没有答对或没有答到点上,或者把双重效验锁搞混了,哭笑不得。。 那么你对重入锁了解有多少呢?今天,栈长帮大家撕开重入锁的面纱,来见识下重入锁的真实容颜。。 什么是重入锁 java.util.concurrent.locks.ReentrantLock 这个是 JDK @since 1.5 添加的一种颗粒度更小的锁,它完全可以替代 synchronized 关键字来实现它的所有功能,而且 ReentrantLock 锁的灵活度要远远大于 synchronized 关键字。 从类结构图看出,ReentrantLock 实现了 Lock 接口,ReentrantLock 只是 Lock 接口的一个实现而已。 java.util.concurrent.locks.Lock 它们都是 java.util.concurrent 包里面的内容(俗称 JUC、并发包),也都是 JDK 1.5 开始加入的。 为什么叫重入锁呢? ReentrantLock,我们把它拆开来看就明了了。 Re-Entrant-Lock:即表示可重新反复进入的锁,但仅限于当前线程; public void m() { lock.lock(); lock.lock(); try { // ...