zoukankan      html  css  js  c++  java
  • 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/
    来源:头条号(今日头条旗下创作平台)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    有限自动机的构造与识别
    c语言文法
    201506110097-试验一实验报告
    作业9.30
    组合数据类型练习,综合练习
    Python综合基础练习
    linux基本命令
    试述大数据对思维方式的重要影响
    语法分析
    有限自动机的构造与识别
  • 原文地址:https://www.cnblogs.com/kevin-yuan/p/5585909.html
Copyright © 2011-2022 走看看