面试题总结_2


=Start=

缘由:

之前记录了一篇文章「面试题总结」,主要包含和具体编程语言相关的面试题,在这里补充一下「计算机网络」、「操作系统」等的知识,方便考察面试人员的CS基础是否牢固。

正文:

参考解答:

=END=

,

《 “面试题总结_2” 》 有 34 条评论

  1. OSI七层模型详解
    http://blog.csdn.net/yaopeng_2005/article/details/7064869

    超详细的TCP/IP网络协议图
    http://www.colasoft.com.cn/download/network-protocol-map-2016.zip

    Linux下套接字详解(补充)–OSI七层与TCP/IP五层网络架构详解
    http://blog.csdn.net/gatieme/article/details/50858920

    OSI七层与TCP/IP五层网络架构详解
    http://www.ha97.com/3215.html

    OSI七层模型详解 TCP/IP协议
    http://www.cnblogs.com/jeanschen/p/3762475.html

  2. 作为一个面试官,我是怎么来面试测试人员的
    https://mp.weixin.qq.com/s?__biz=MzIzMzQ4NDg3NQ==&mid=2247484180&idx=1&sn=698e07b1f32a20098f71d77246732ecb
    `
    只关心对方提及的内容(根据简历问问题)
    技术和思路并存(技术重要,解决思路也同样值得考察)
    注意力放在人身上(你是否愿意把他招进来和你一起工作?)
    问题必须有上下文(为什么要做、怎么做、做的如何、后期规划……)
    关心8个小时外的生活(积极、健康向上)
    不要重复劳动(多少还是应该有点追求的)
    只关心自己要关心的(不要为了招人而招人,招了人过来是要干活的)
    `

  3. 当我面试时,我究竟想要知道些什么?
    http://36kr.com/p/5067564.html
    `
    在面试中,面试官最喜欢看到的就是面试者能够将自己印象深刻的案例陈述「到位」。
    所谓陈述到位,就是要能够把你做过的事儿,逻辑清晰、主次分明、细节清楚的表达完整。

    在这个环节,稍微资深一点的面试官,都会用STAR模型来尝试衡量候选人在未来工作中,是否能够胜任面试的职位,所谓STAR模型就是四个单词:Situation、Task、Action、Result

    Situation:在什么样的情况下,在什么背景下
    Task:(候选人)接受了怎样的一个任务
    Action:(候选人)做出了什么行动
    Result:达成了什么结果
    `

  4. 如何回答「宝洁八大问」?
    https://www.zhihu.com/question/19889186/answer/206880277
    `
    1. Describe an instance where you set your sights on a high/demanding goal and saw it through completion. (举例说明,你如何制定了一个很高的目标,并且最终实现了它。)
    2. Summarize a situation where you took the initiative to get others going on an important task or issue and played a leading role to achieve the results you wanted. (请举例说明你在一项团队活动中如何采取主动性,并且起到领导者的作用,最终获得你所希望的结果。)
    3. Describe a situation where you had to seek out relevant information, define key issues and decide on which steps to take to get the desired results. (请详细描述一个情景,在这个情景中你必须搜集相关信息,划定关键点,并且决定依照哪些步骤能够达到所期望的结果。)
    4. Describe an instance where you made effective use of facts to secure the agreement of others. (举例说明你是怎样用事实促使他人与你达成一致意见的。)
    5. Give an example of how you worked effectively with people to accomplish an important result. (举例证明你可以和他人合作,共同实现一个重要目标。)
    6. Describe a creative/innovative idea that you produced which led to a significant contribution to the success of an activity or project. (举例证明,你的一个创意曾经对一个项目的成功起到至关重要的作用。)
    7. Provide an example of how you assessed a situation and achieved good results by focusing on the most important priorities. (请举例,你是怎样评估一种情况,并将注意力集中在关键问题的解决。)
    8. Provide an example of how you acquired technical skills and converted them to practical application. (举例说明你怎样获得一种技能,并将其转化为实践。)
    `

  5. 浅谈后端面试指南
    http://www.importnew.com/27940.html
    `
    面试是一次双向的沟通过程,对求职者而言是找到心仪的东家,对公司而言是招揽合适的人才。面试官的目的是考察求职者能力,评估和岗位的匹配程度,绝非用稀奇古怪的题目面倒求职者。

    态度指南
    古有周公吐哺、三顾茅庐的佳话,优秀的人才从来不乏东家,所以请尊重求职者,纵然无缘招揽优秀的人才,也要赢得面试者的好评和名声:
    · 求职者慕名而来至少出门迎接、给瓶解渴水吧
    · 营造宽松良好的面试氛围,让求职者正常发挥
    · 控制好时间,不予太长,亦不宜太短
    · 面试的过程请保持耐心,认真听取,切勿打断求职者,切勿过分争论和反驳
    · 面试结束后尽快给予求职者反馈

    基础知识
      熟练掌握一门语言
      熟悉基本的数据结构和算法
      熟练使用 Linux(Windows),对操作系统原理的理解
      Optional: 数据库、Web Server 和 TCP/IP 等
    专业 & 经验
      专业知识的考察因业务而异,求职者应该需要了解整个项目的功能,明白自己模块承担的角色,熟悉模块的业务流程以及针对该业务使用到的技术框架,某些特殊的业务可能会用到算法。
    开放问题
      你使用过哪些语言,对比它们的异同,谈谈你的感受?
      你喜欢哪些技术书籍(博客)?
      哪些软件你觉得很棒,为什么?
      你通过什么渠道学习新技术知识?
      你解决过哪些令你难忘的 bug,并说说解决的过程?
      谈谈个人计算机(互联网网络)的发展历史?
      谈谈你敬佩的工程师?
      谈谈测试的重要性?
    `

  6. 拜托,面试别再问我TopK了!!!
    https://mp.weixin.qq.com/s/FFsvWXiaZK96PtUg-mmtEw
    `
    TopK,不难;其思路优化过程,不简单:

    1. 全局排序,O(n*lg(n))
    2. 局部排序,只排序TopK个数,O(n*k)
    3. 堆,TopK个数也不排序了,O(n*lg(k))
    4. 分治法,每个分支“都要”递归,例如:快速排序,O(n*lg(n))
    5. 减治法,“只要”递归一个分支,例如:二分查找O(lg(n)),随机选择O(n)

    TopK的另一个解法:随机选择+partition
    `

  7. bitmap计数,求TopK最快的方法?
    https://mp.weixin.qq.com/s/sDjCBFXoWajqvgBFdDoSrA
    `
    求TopK,有没有比随机选择更快的方法呢?
    空间换时间,是算法优化中最常见的手段,如果有相对充裕的内存,可以有更快的算法。

    通过比特位图精准计数的方式,求解TopK,算法整体只需要不到2次扫描,时间复杂度为O(n),比减治法的随机选择会更快。
    `

  8. 大型互联网公司研发职位面试指北
    https://mp.weixin.qq.com/s/C9yrrxdQo1e5HkZR6Fj68g
    `
    高可用、高并发、高性能是互联网特点,具体应用应对方式是包含分布式、微服务、高性能分布式存储、以及java基础、数据结构、在有就是面向对象技术掌握等。其实本职上来自于基础知识,来自于对计算机理论把握以及以及通过理论指导的编程实战能力。

    对于java看中对于基础掌握,各个容器运用,对于线程掌握、线程要能清晰理解线程池线程池的每一个参数,对于jvm理解以及gc理解,并且进行过哪些gc配置,反射、封装、继承、多态实际有过哪些应用,解决什么问题,一是考察用过,用的对不对,在有就是为什么这么用,要有自己思考,而不是为了用而用。

    数据结构很重要,链表、数组、hash、树、二叉树等数据结构以及实际运用,在有就是时间复杂度、空间复杂度,这两个概念一定要有,一个是决定算法执行时间、一个是决定算法占据内存空间,对于高性能都是极为重要的,一定要掌握,不掌握基本面试就比较难了。

    应用程序本身极其依赖于存储,存储包含数据库mysql、Oracle这种关系型数据库,也包含nosql类似redis、hbase等分布式存储,互联网公司因为并发量极高,数据库不是很合适存储介质,更多是通过redis进行存储,对于redis不能单单只会用,要了解其单机架构比如单线程、非阻塞IO,也要了解分布式集群原理以及架构,在有就是数据删除、过期原理,要了解官方分布式架构以及开源分布式架构,了解其中优劣势在哪。

    代码能力以及对于面向对象的理解,代码要简洁清晰不出错,一般会出面试编程题,考的是编程习惯,好的编程习惯是加分项,各种各样条件检查,命名大小写准确,在有就是准确性,对于给定问题要思考准确,答错就会比较难于通过面试。

    代码能力中面向对象技术考察,实际工作中怎么使用封装、继承、多态来解决问题,使用过哪些设计模式,有什么好处,为什么用?我更多会考察面试者对于问题思考,没有自己思考作出的事情没有任何价值,是没有自己思想的。

    微服务当下互联网公司微服务是标配,微服务有没有用过,怎么用的,服务有多少个节点为什么有这么多个节点,怎么评估的?微服务原理?看过哪个微服务源码?为什么使用微服务,是不是别人使用,行业使用我们就需要使用?

    上面部分能全部比较准确答出,通过面试几率大,在有就是对于复杂均衡有哪些了解?nginx负载均衡算法,nginx架构。在有就是研究过哪些源码?有什么心得体会。研究过哪些存储或者分布式存储、消息队列,或者对于搜索引擎、推荐引擎等技术有深入研究。
    `

  9. 为什么现在面试总是面试造火箭?
    https://mp.weixin.qq.com/s/4RXN6DSzULH-tEIFUZXp4Q
    `
    一、 考验对专业知识的掌握的扎实程度
    在工作中常用的知识点,那些是最重要的,那么大家都会这些,如果你不知道点,别人不知道的东西,这些东西比别人掌握得更深一点,面试官为什么要你?也许你还是个双非(非982、211)。
    我觉得在任何领域都适合一个定律,就是「T」字形发展,先把专业搞深一点,然后往两边扩展。

    二、醉翁之意不在题
    我期望的面试官是这样的,或者说如果我以后当了面试官我会怎么做。
    * 作为面试官不是把面试者考倒,而是尽量挖掘面试者擅长的地方,然后去打破砂锅问到底的看对擅长的地方研究有多深,考察深度。
    * 在考察的时候先考察广度,再考察深度,从广度的问题中提取擅长的点,然后再问下去。

    一些小提示
    * 一般面试官不会因为你某道题没答出来就否定你的。
    * 面试官不喜欢简历上写的啥都会,一问每个知识点都掌握得很浅。
    * 对于平时常用的框架,至少要知道核心原理。
    `

  10. 怎样回答技术面试题?
    https://mp.weixin.qq.com/s/KZl2-4UscbKXkMJ2MKg89w
    `
    一、听清题,勿抢答

    二、从全局、到具体

    三、不要骄傲自负,也不妄自菲薄

    四、简历切勿太夸张,更不要全是产品描述

    五、广度与深度
    一般的面试,都会根据面试者的实际工作经验时长,对应到该有的广度与深度。但广与深两者间,我认为先深入一个领域,一个概念,再拓展开来,这样效果更好。

    六、积极主动

    七、有证明更佳
    `

  11. 云计算技能图谱
    https://mp.weixin.qq.com/s/55kinUYNqyCOjdAwciWVOQ
    `
    可以看到,里面涉及的知识点太多了,这个公众号我会重点关注基础设施的计算和网络部分,架构的 OpenStack 、Docker 部分,开发语言重点关注 C/C++、Python,其他可能也会涉及,不管怎么样,希望能坚持下去吧。

    基础设施
    包括计算、存储、网络、安全四大板块所涉及到的基础知识,现在比较火的容器也在列,隶属于计算部分。

    架构
    涉及很多的框架,包括分布式消息、微服务、OpenStack 生态、Docker 生态等,这些都是一个云平台为了满足高可用、高可靠、和性能不可缺少的组件。

    开发
    涉及到流程和语言方面,其中 Python 和 Go 是云计算时代比较常用的语言工具。

    平台
    平台部分展示的更多的是管理和维护一个云平台的工具,其中最为重要的是数据管理部分,光这个部分都可以再生出一个庞大的技能图谱——大数据开发工程师必备技能。

    应用
    主要是基于云平台开发的前后端应用和行业相关的应用。

    运维
    运维也可以再生一个技能图谱,这部分仅当了解。
    `

  12. 我掏空了各大搜索引擎,给你整理了154道Java面试题!
    https://mp.weixin.qq.com/s/a_3XxGDqLe7VcNql6v_gRg
    `
    # Java集合22题

    ArrayList 和 Vector 的区别。
    说说 ArrayList,Vector, LinkedList 的存储性能和特性。
    快速失败 (fail-fast) 和安全失败 (fail-safe) 的区别是什么?
    hashmap 的数据结构。
    HashMap 的工作原理是什么?
    Hashmap 什么时候进行扩容呢?
    List、Map、Set 三个接口,存取元素时,各有什么特点?
    Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用 == 还是 equals()? 它们有何区别?
    两个对象值相同 (x.equals(y) == true),但却可有不同的 hash code,这句话对不对?
    heap 和 stack 有什么区别。
    Java 集合类框架的基本接口有哪些?
    HashSet 和 TreeSet 有什么区别?
    HashSet 的底层实现是什么?
    LinkedHashMap 的实现原理?
    为什么集合类没有实现 Cloneable 和 Serializable 接口?
    什么是迭代器 (Iterator)?
    Iterator 和 ListIterator 的区别是什么?
    数组 (Array) 和列表 (ArrayList) 有什么区别?什么时候应该使用 Array 而不是 ArrayList?
    Java 集合类框架的最佳实践有哪些?
    Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用 == 还是 equals()?它们有何区别?
    Comparable 和 Comparator 接口是干什么的?列出它们的区别
    Collection 和 Collections 的区别。

    # JVM与调优21题

    Java 类加载过程?
    描述一下 JVM 加载 Class 文件的原理机制?
    Java 内存分配。
    GC 是什么? 为什么要有 GC?
    简述 Java 垃圾回收机制
    如何判断一个对象是否存活?(或者 GC 对象的判定方法)
    垃圾回收的优点和原理。并考虑 2 种回收机制
    垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
    Java 中会存在内存泄漏吗,请简单描述
    深拷贝和浅拷贝。
    System.gc() 和 Runtime.gc() 会做什么事情?
    finalize() 方法什么时候被调用?析构函数 (finalization) 的目的是什么?
    如果对象的引用被置为 null,垃圾收集器是否会立即释放对象占用的内存?
    什么是分布式垃圾回收(DGC)?它是如何工作的?
    串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?
    在 Java 中,对象什么时候可以被垃圾回收?
    简述 Java 内存分配与回收策率以及 Minor GC 和 Major GC。
    JVM 的永久代中会发生垃圾回收么?
    Java 中垃圾收集的方法有哪些?
    什么是类加载器,类加载器有哪些?
    类加载器双亲委派模型机制?

    # 并发编程28题

    Synchronized 用过吗,其原理是什么?
    你刚才提到获取对象的锁,这个“锁”到底是什么?如何确定对象的锁?
    什么是可重入性,为什么说 Synchronized 是可重入锁?
    JVM 对 Java 的原生锁做了哪些优化?48
    为什么说 Synchronized 是非公平锁?49
    什么是锁消除和锁粗化?49
    为什么说 Synchronized 是一个悲观锁?乐观锁的实现原理又是什么?什么是 CAS,它有什么特性?
    乐观锁一定就是好的吗?
    跟 Synchronized 相比,可重入锁 ReentrantLock 其实现原理有什么不同?
    那么请谈谈 AQS 框架是怎么回事儿?
    请尽可能详尽地对比下 Synchronized 和 ReentrantLock 的异同。
    ReentrantLock 是如何实现可重入性的?
    除了 ReetrantLock,你还接触过 JUC 中的哪些并发工具?
    请谈谈 ReadWriteLock 和 StampedLock。
    如何让 Java 的线程彼此同步?你了解过哪些同步器?请分别介绍下。
    CyclicBarrier 和 CountDownLatch 看起来很相似,请对比下呢?

    # Java 线程池相关问题
    Java 中的线程池是如何实现的?
    创建线程池的几个核心构造参数?
    线程池中的线程是怎么创建的?是一开始就随着线程池的启动创建好的吗?
    既然提到可以通过配置不同参数创建出不同的线程池,那么 Java 中默认实现好的线程池又有哪些呢?请比较它们的异同
    如何在 Java 线程池中提交线程?
    什么是 Java 的内存模型,Java 中各个线程是怎么彼此看到对方的变量的?
    请谈谈 volatile 有什么特点,为什么它能保证变量对所有线程的可见性?
    既然 volatile 能够保证线程间的变量可见性,是不是就意味着基于 volatile 变量的运算就是并发安全的?
    请对比下 volatile 对比 Synchronized 的异同。
    请谈谈 ThreadLocal 是怎么解决并发安全的?
    很多人都说要慎用 ThreadLocal,谈谈你的理解,使用 ThreadLocal 需要注意些什么?

    # spring 25题

    1、什么是 Spring 框架?Spring 框架有哪些主要模块?
    2、使用 Spring 框架能带来哪些好处?
    3、什么是控制反转(IOC)?什么是依赖注入?
    4、请解释下 Spring 框架中的 IoC?
    5、BeanFactory 和 ApplicationContext 有什么区别?
    6、Spring 有几种配置方式?
    7、如何用基于 XML 配置的方式配置 Spring?
    8、如何用基于 Java 配置的方式配置 Spring?
    9、怎样用注解的方式配置 Spring?
    10、请解释 Spring Bean 的生命周期?
    11、Spring Bean 的作用域之间有什么区别?
    12、什么是 Spring inner beans?
    13、Spring 框架中的单例 Beans 是线程安全的么?
    14、请举例说明如何在 Spring 中注入一个 Java Collection?
    15、如何向 Spring Bean 中注入一个 Java.util.Properties?
    16、请解释 Spring Bean 的自动装配?
    17、请解释自动装配模式的区别?
    18、如何开启基于注解的自动装配?
    19、请举例解释@Required 注解?
    20、请举例解释@Autowired 注解?
    21、请举例说明@Qualifier 注解?
    22、构造方法注入和设值注入有什么区别?
    23、Spring 框架中有哪些不同类型的事件?
    24、FileSystemResource 和 ClassPathResource 有何区别?
    25、Spring 框架中都用到了哪些设计模式?

    # 设计模式 10题

    1.请列举出在 JDK 中几个常用的设计模式?
    2.什么是设计模式?你是否在你的代码里面使用过任何设计模式?
    3.Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式
    4.在 Java 中,什么叫观察者设计模式(observer design pattern)?
    5.使用工厂模式最主要的好处是什么?在哪里使用?
    6.举一个用 Java 实现的装饰模式(decorator design pattern)?它是作用于对象层次还是类
    层次?
    7.在 Java 中,为什么不允许从静态方法中访问非静态变量?
    8.设计一个 ATM 机,请说出你的设计思路?
    9.在 Java 中,什么时候用重载,什么时候用重写?
    10.举例说明什么情况下会更倾向于使用抽象类而不是接口

    # springboot 22题

    什么是 Spring Boot?
    Spring Boot 有哪些优点?
    什么是 JavaConfig?
    如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
    Spring Boot 中的监视器是什么?
    如何在 Spring Boot 中禁用 Actuator 端点安全性?
    如何在自定义端口上运行 Spring Boot 应用程序?
    什么是 YAML?
    如何实现 Spring Boot 应用程序的安全性?
    如何集成 Spring Boot 和 ActiveMQ?
    如何使用 Spring Boot 实现分页和排序?
    什么是 Swagger?你用 Spring Boot 实现了它吗?
    什么是 Spring Profiles?
    什么是 Spring Batch?
    什么是 FreeMarker 模板?
    如何使用 Spring Boot 实现异常处理?
    您使用了哪些 starter maven 依赖项?
    什么是 CSRF 攻击?
    什么是 WebSockets?
    什么是 AOP?
    什么是 Apache Kafka?
    我们如何监视所有 Spring Boot 微服务?

    # Netty10题

    BIO、NIO和AIO的区别?
    NIO的组成?
    Netty的特点?
    Netty的线程模型?
    TCP 粘包/拆包的原因及解决方法?
    了解哪几种序列化协议?
    如何选择序列化协议?
    Netty的零拷贝实现?
    Netty的高性能表现在哪些方面?
    NIOEventLoopGroup源码?

    # Redis 16题

    什么是redis?
    Reids的特点
    Redis支持的数据类型
    Redis是单进程单线程的
    虚拟内存
    Redis锁
    读写分离模型
    数据分片模型
    Redis的回收策略
    使用Redis有哪些好处?
    redis相比memcached有哪些优势?4
    redis常见性能问题和解决方案
    MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据245
    Memcache与Redis的区别都有哪些?
    Redis 常见的性能问题都有哪些?如何解决?
    Redis 最适合的场景
    `

  13. 你应该知道的 12 道经典计算机网络面试题
    https://mp.weixin.qq.com/s/8Q50wJlQF9jUovMNPgc-QA
    `
    1、请详细介绍一下 TCP 的三次握手机制,为什么要三次握手?
    2、讲一讲SYN超时,洪泛攻击,以及解决策略
    3、详细介绍一下 TCP 的四次挥手机制,为什么要有 TIME_WAIT 状态,为什么需要四次握手?服务器出现了大量 CLOSE_WAIT 状态如何解决
    4、详细讲一下TCP的滑动窗口
    5、讲一下 HTTP 与 HTTPS 的区别
    6、讲一讲 TCP 和 UDP 各有什么特点,两者有什么区别
    7、在地址栏键入 URL 后,网络世界发生了什么?
    8、HTTP的常见状态码有哪些,代表什么含义?
    9、GET 请求和 POST 请求的区别
    10、什么是 Cookie,Cookie 的使用过程是怎么样的?
    11、什么是 session,有哪些实现 session 的机制?
    12、session 和 cookie 有什么区别
    `
    《计算机网络:自顶向下方法》
    https://www.cnblogs.com/zhangshitong/p/6478721.html
    https://www.cnblogs.com/jiangxinyang/p/8453827.html

  14. 软件开发主题
    https://www.amazon.jobs/zh/landing_pages/software-development-topics
    `
    # 编程语言
    在面试技术职位之前,我们并不要求您知道任何特定的编程语言。然而,熟悉一门显着的语言通常是成功的先决条件。您应该熟悉诸如 C, C++, C++14, C#, Go, Java7, Java8, JavaScript, Kotlin, Objective-C, PyPy2, PyPy3, Python2, Python3, Ruby, Scala 或 Swift 等语言的编程语法。您还应该了解一些编程语言的细微差别,例如内存管理是如何运作的,或者最常用的编码集,编码库等。

    # 数据结构
    我们所做的大部分工作都涉及以有效的方式存储和提供对数据的访问。这需要员工拥有强大的数据结构掌握能力与背景。您需要了解常见数据结构的内部工作原理,并能够比较它们在各种应用程序中的使用情况。您必须懂得常用操作的运行时刻以及它们如何使用内存。

    # 算法
    您的面试不会专注于算法的死记硬背。但是,熟悉理解最常用的算法可能会使解决某些问题变得容易许多。考虑检查通用算法,如遍历,分治,广度优先搜索与深度优先搜索,并了解每种算法的权衡。了解不同类别算法的运行时刻,理论局限性和基本实现策略比记忆任何给定算法的具体细节更重要。

    # 编码
    您会被要求编写语法正确的代码 – 不能使用伪代码。如果您觉得编码没有 IDE 或使用特定语言进行编码让您决定有点生疏,现在是时候活动胫骨,并拿起笔和纸编码了。软件开发工程师在亚马逊上做的最重要的事情是编写可扩展,可靠且经过充分测试的代码。这些因素是您的代码的主要评估标准。确保您检查极端例子并确认没有错误的输入可以通过。这是您展示编码能力的机会。

    # 面向对象设计
    良好的设计对于可扩展,无缺陷,长寿命的代码至关重要。我们知道任何给定的软件问题拥有几乎无限的解决方式,但是当软件需要可扩展和可维护性时,良好的软件设计对成功至关重要。构建持久性软件的一种渠道是使用面向对象的设计中的最佳实践方法。您应该具备一些常用和有用的设计模式的工作知识,以及如何以面向对象的方式编写软件。您基本上不会被要求描述具体设计模式的具体工作细节,但做好准备捍卫您的设计选择。

    # 数据库
    我们编写的大部分软件有数据存储的支持。在研究如何最有效地检索和存储数据以备将来使用时,技术人员会面临许多挑战。亚马逊一直在非关系型数据库迁移的最前沿。我们已经向开发者社区提供亚马逊网络服务(如 DynamoDB),以便他们利用非关系数据库的优势。您不必是非关系型数据库的专家,但您应该熟悉广泛的数据库概念及其应用程序。关于如何权衡关系型和非关系型数据库,您知道得越详细,对您的面试越有利。

    # 分布式计算
    亚马逊的系统必须在高负载和低容错性的状态下运作。虽然我们有一些内部工具可以帮助扩展,但了解几个基本的分布式计算概念很重要。例如了解面向服务的体系结构,MapReduce,分布式缓存和负载平衡等主题,可以帮助在您遇到的一些更复杂的分布式体系结构问题时作答。

    # 操作系统
    您不需要知道如何从头构建自己的操作系统,但您应该熟悉可能影响代码性能的一些操作系统主题(例如内存管理,进程,线程,同步,分页和多线程)。

    # 网络主题
    我们希望我们的工程师熟悉互联网的基本原理。了解浏览器如何在高层次上运行,从 DNS 查询和 TCP / IP,到Socket 连接。我们要求工程师对万维网运作的基本原理有深入的了解。

    # 机器学习和人工智能
    可能的问题是关于数据驱动建模,培训/测试协议,错误分析和统计显着性。例如,给定一个问题定义,您应该能够将其表述为一个机器学习问题,并提出一个解决方案,包括关于数据源、注释、建模方法和潜在缺陷的想法。了解基本的人工智能/ 机器学习的方法和算法 – 重温您的机器学期和人工智能的教科书吧。

    我们知道面试需要涉及的主题很多。请记住您的面试官不会根据您是否记得所有细节进行评估。他们会看你是否有能力运用知识有效地解决问题。技术性面试的准备时间(有时)有限,我们建议您查看计算机科学基础知识,并在集成开发环境之外练习写代码。这样可能会事半功倍。
    `

    Software Development Engineer Interview Preparation (SIP)
    https://www.amazon.jobs/zh/software-development-interview-prep
    `
    # Amazon Leadership Principles
    This video provides valuable insight to help you be successful when interviewing for Amazon’s Leadership Principles.

    # Amazon Coding Sample
    This video dives into a coding example and how candidates should approach, analyze and solve such problems when interviewing at Amazon.

    # Amazon System Design Preparation
    This video tackles a system design example question and how candidates should approach, analyze and solve such technical questions.

    # SDE Interview FAQs

    # SDE Interview Coding Example
    `

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注