interview que

百度:

MySQL InnoDB存储的文件结构
索引树是如何维护的?
数据库自增主键可能的问题
Redis的并发竞争问题如何解决了解Redis事务的CAS操作吗
分析线程池的实现原理和线程的调度过程
动态代理的几种方式
Spring AOP与IOC的实现
为什么CGlib方式可以对接口实现代理?
RMI与代理模式
Dubbo的底层实现原理和机制
描述一个服务从发布到被消费的详细过程
算法方面考察了一个简单的数组就地去重问题,用丢弃数组尾部元素的方式实现
分布式系统怎么做服务治理
接口的幂等性的概念
Maven出现版本冲突如何解决
JVM垃圾回收机制,何时触发MinorGC等操作
新生代和老生代的内存回收策略
Eden和Survivor的比例分配等
Synchronized和Lock的区别

阿里巴巴:

总体上还是围绕项目架构、Java基础、JVM、并发编程、数据库操作、中间件技术和Dubbo服务治理框架等展开

VM内存分代
Java 8的内存分代改进
深入分析了Classloader,双亲委派机制
JVM的编译优化
对Java内存模型的理解,以及其在并发中的应用
指令重排序,内存栅栏等
HashMap的并发问题
了解LinkedHashMap的应用吗
在工作中遇到过哪些设计模式,是如何应用的

优酷土豆:

主要是Java基础,Spring原理,Java NIO,并发和集合框架等,可能是因为视频网站,优酷考察网络原理的知识多,比如TCP/IP协议、长连接与短连接等。

TCP/IP协议
长连接与短连接
mapreduce过程
多路归并的时间复杂度
海量url去重类问题
Java NIO使用
倒排索引的原理
对分词技术的了解

搜狐新闻:

消息中间件如何解决消息丢失问题
Dubbo的服务请求失败怎么处理
重连机制会不会造成错误
对分布式事务的理解
深入分析几个设计模式

58赶集:

HTTP请求的报文格式Spring的事务实现原理
实际场景问题,大量用户数据如何在内存中排序和去重
缓存机器增删如何对系统影响最小,一致性哈希的实现
Redis持久化的几种方式
Redis的缓存失效策略
实际场景问题解决,典型的TOP K问题
实际场景问题,海量登录日志如何排序和处理SQL操作,主要是索引和聚合函数的应用

国美在线:

SQL语句编写
MySQL的几种优化
Spring行级锁
Spring衍生的相关其他组件整理
RMI的几种协议和实现框架
BTree相关的操作
数据库锁表的相关处理
考察跳台阶问题

基础知识必须要扎实
语言基础,计算机基础,算法和基本的Linux运维等
针对Java语言,需要对集合类,并发包,IO/NIO,JVM,内存模型,泛型,异常,反射等都有比较深入的了解,最好是学习过部分源码。这些知识点都是相通的,在面试中也可以体现。
从源码的角度,可以深入到哈希表的实现,拉链法以外的哈希碰撞解决方法,如何平衡内部数组保证哈希表的性能不会下降等;
从线程安全的角度,可以扩展到HashTable、ConcurrentHashMap等其他的数据结构,可以比较两种不同的加锁方式,RetreenLock的实现和应用,继续深入可以考察Java内存模型,Volitale原语,内存栅栏等;横向扩展可以考察有序的Map结构如TreeMap、LinkedHashMap,继而考察红黑树,LRU缓存,HashMap的排序等知识。
Java方向的中高级职位,会比较重视对虚拟机的掌握,诸如类加载机制,内存模型等,这些在程序的优化和并发编程中都非常重要。
算法方面,基本的排序和查找算法,对递归,分治等思想的掌握。如果算法基础不太好,推荐《编程珠玑》等,每一章都很经典。
计算机基础方面,比如TCP/IP协议和操作系统的知识也是必备的,这些都是大学计算机专业的基础课,也是做开发基本的素养。
系统设计能力
设计模式,造轮子的能力,各种缓存和数据库应用,缓存,中间件技术,高并发和高可用的分布式系统设计等。
大型互联网公司每天要面对海量的请求,都会考察分布式系统的架构和设计,如何构建高并发高可用的系统。另外因为用户基数比较大,一个细微的优化可能会给带来很大的收益,所以对一些技术栈的掌握要求都比较深入。比如对MySQL数据库,需要知道相关的配置和优化,业务上来以后如何分库分表,如何合理的配置缓存,一个经验丰富的服务端开发人员,也应该是一个称职的DBA。
对常用的开发组件,比如中间件,RPC框架等都要有一定的了解,虽然工作中可能用不到我们自己造轮子,但是掌握原理才会得心应手。这部分知识主要靠工作积累,推荐《大型网站技术架构与Java中间件实践》,还有曾贤杰的《大型网站系统架构与实践》,里面对大型网站的演变,服务治理和中间件的使用做了很详细的阐述。
作为业务开发人员,有必要了解压力测试相关的指标,比如QPS,用户平均等待时间等,可以帮助你更好的了解自己的系统。

作者:头条号 / IT时报
链接:http://toutiao.com/i6295590871521821185/
来源:头条号(今日头条旗下创作平台)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

时间: 2024-08-05 23:49:20

interview que的相关文章

《Cracking the Coding Interview》——第16章:线程与锁——题目5

2014-04-27 20:16 题目:假设一个类Foo有三个公有的成员方法first().second().third().请用锁的方法来控制调用行为,使得他们的执行循序总是遵从first.second.third的顺序. 解法:你应该想到了用lock的方法类阻塞,不过这里面有个概念问题使得直接用ReentrantLock不能通过编译(对于一个锁对象,不同在A线程中锁定,又在B线程中解锁,不允许这样的归属关系),可以用Semaphore来达到相同的目的.请看下面的代码. 代码: 1 // 16

《Cracking the Coding Interview》——第16章:线程与锁——题目3

2014-04-27 19:26 题目:哲学家吃饭问题,死锁问题经典模型(专门用来黑哲学家的?). 解法:死锁四条件:1. 资源互斥.2. 请求保持.3. 非抢占.4. 循环等待.所以,某砖家拿起一只筷子后如果发现没有另一只了,就必须把手里这只筷子放下,这应该是通过破坏"请求保持"原则来防止死锁产生,请求资源失败时,连自己的资源也进一步释放,然后在下一轮里继续请求,直到成功执行. 代码: 1 // This is the class for chopsticks. 2 import j

《Cracking the Coding Interview》——第16章:线程与锁——题目2

2014-04-27 19:14 题目:如何测量上下文切换的时间? 解法:首先,上下文切换是什么,一搜就知道.对于这么一个极短的时间,要测量的话,可以通过放大N倍的方法.比如:有A和B两件事,并且经常一起发生,每件只需要花几纳秒.如果你把A事件连续做几百万次,而B时间只做了几次,这样就能排除B事件对于测量的影响.如果总时间S = mA + nB.当m >> n 时,A≈S / m.下面的测量方法类似于打乒乓球,在主线程和副线程间互相传递一个令牌,这个令牌可以是变量.管道之类的用于通信的工具.与

《Cracking the Coding Interview》——第16章:线程与锁——题目1

2014-04-27 19:09 题目:线程和进程有什么区别? 解法:理论题,操作系统教材上应该有很详细的解释.我回忆了一下,写了如下几点. 代码: 1 // 16.1 What is the difference between process and thread? 2 Answer: 3 Process: 4 1. Basic element of resource allocation in the operating system. 5 2. Possesses independent

Popular HashMap and ConcurrentHashMap Interview Questions

http://howtodoinjava.com/core-java/collections/popular-hashmap-and-concurrenthashmap-interview-questions/ Popular HashMap and ConcurrentHashMap Interview Questions June 14, 2013 by Lokesh Gupta In my previous post related to “How HashMap works in jav

Today's interview of C#

I think they are advanced topics. C# 1. when will you use list, when will you use hashtable. 2. when will you use Idispose. 3. Async and Await public async Task<string> DoAsync5()        {           Task<string> mytask=Task.Run<string>((

Java Interview Reference Guide--reference

Part 1 http://techmytalk.com/2014/01/24/java-interview-reference-guide-part-1/ Posted on January 24, 2014 by Nitin Kumar JAVA Object Oriented Concepts Java in based on Object Oriented concepts, which permits higher level of abstraction to solve any p

《Cracking the Coding Interview》——第18章:难题——题目10

2014-04-29 04:22 题目:给定一堆长度都相等的单词,和起点.终点两个单词,请从这堆单词中寻找一条变换路径,把起点词变成终点词,要求每次变换只能改一个字母. 解法:Leetcode中有Word Ladder,这题基本思路一致. 代码: 1 // 18.10 Given a list of words, all of same length. Given a source and a destionation words, you have to check if there exis

《Cracking the Coding Interview》——第18章:难题——题目9

2014-04-29 04:18 题目:有一连串的数被读入,设计一个数据结构,能随时返回当前所有数的中位数. 解法:用一个大顶堆,一个小顶堆将数分成数量最接近的两份,就能轻松得到中位数了. 代码: 1 // 18.9 A stream of integers are passed to you, you have to tell me the median as they keep coming in. 2 #include <climits> 3 #include <iostream&

《Cracking the Coding Interview》——第18章:难题——题目13

2014-04-29 04:40 题目:给定一个字母组成的矩阵,和一个包含一堆单词的词典.请从矩阵中找出一个最大的子矩阵,使得从左到右每一行,从上到下每一列组成的单词都包含在词典中. 解法:O(n^3)级别的时间和空间进行动态规划.这道题目和第17章的最后一题很像,由于这题的时间复杂度实在是高,我动手写了字典树进行加速.如果单纯用哈希表来作为词典,查询效率实际会达到O(n)级别,导致最终的算法复杂度为O(n^4).用字典树则可以加速到O(n^3),因为对于一个字符串"abcd",只需要