面试题总结_2

本文最后更新于2017年1月1日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

缘由:

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

正文:

参考解答:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/3101.html

《面试题总结_2》上有31条评论

  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 是云计算时代比较常用的语言工具。

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

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

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注