面经

  最近不少学弟学妹私戳我,想让我分享一下一些互联网行业的面试经验,因此打算写下这么一篇文章,算是乐于助人吧,固然本文主要的对象是技术岗,非技术岗也能够勉强凑合看看-_-。php

一:招聘时间

  对于一些大型的互联网公司,招聘通常分为三个时间段:春招(主要是暑假实习生招聘和少许补招),秋招(正式招聘),以及平常实习(顾名思义)。python

  春招:因为阿里开了个一个不太好的头,春招的实习一再提早,今年过春节以前就已经开始,通常持续到5~6月,春招招聘的实习生因为实习转正的机会会很大,并且是做为一种互联网企业宣传自身的一个渠道,难度相对较大。但好处在于若是顺利转正就能够拥有一个美滋滋的大四生活,就能够浪里格浪了。并且实习经历做为去往大型互联网企业的金钥匙,若是想要找到一份满意的工做的话,实习经历必须受到重视。就互联网行业而言,若是到了秋招这个时间段尚未实习经历,除非你特别优秀,不然很难找到一份很满意的工做。mysql

  秋招:这也是收获的季节(8月末到11月),基本在这个阶段,有意向从事互联网行业的应届生都会确认本身的最终去向,面试难度稍大于春招,优势在于不须要实习就能够直接拿到offer。linux

  平常实习:主要面向的是非应届。优势在于难度远低于春招秋招,缺点在于要求实习时间较长,至少半年,并且大部分没法转正。git

二:招聘流程

  如今大型互联网公司面试通常分为两个类型:内推和正式招聘。golang

  内推和正式招聘最大的区别是内推不须要笔试,但因为现今内推泛滥,致使很多互联网公司内推也须要笔试,好比网易,京东...。这无形中也弱化了内推的意义,事实上真正的内推不是指单纯把你的简历扔到内推系统里,而是,本身在各类渠道找到适合本身的某个公司的具体团队,而后想办法把本身的简历直接扔给这个团队的leader,这样获得offer的几率会高不少,从而极大程度下降运气在offer获取的做用(特别是腾讯,阿里,对于实力中等偏上的童鞋,可否拿到offer,运气占了很大比例)。面试

  通常而言,正式招聘流程为: 笔试,初试,复试,HR面试(可能会有加面)。固然这也不是绝对的,就我所知,有人面试阿里云,前先后后面了8面。redis

 

三:如何写出一份让人眼前一亮的简历

  首先,简历在求职过程,是求职者的门面,一份优质的简历意味着你能更大几率的拿到面试资格,而且能获得更高的印象分。然而,最近帮不少人内推,就简历而言,优秀的简历很是优秀,可是部分简历确实糟糕透了。优秀的简历都是各不相同的,糟糕的简历确实惊人的类似,总结了一下一份糟糕的简历有哪些特色:算法

  1:内容干瘪,没有任何实在内容,更别说有什么亮点了。通篇讲述本身会什么,可是却没有实例去证实本身是真的会这项技能的。好比说本身擅长JAVA,可是在实践经历中,没有任何和Java开发相关的内容。这是绝大部分糟糕简历最类似的一点。spring

  2:内容主题不明确,面试计算机技术相关岗位,却把大部分笔墨放在学校的社团活动,对于技术岗而言,这些社团活动一笔带过就好。

  3:内容不在多,而在精。看过几份技术岗的简历,竟然把计算机二级也写了上去,然而这并非加分项,而是减分项,一份优秀的简历,必须有本身的逼格,不是什么都往上写的

  因此呢,怎么写好一份合格的简历呢!真要细细道来的话,能够独立成一篇文章,因为篇幅缘由,就简述一下:

  1:一份合格的简历应该是有骨也有肉的,你会什么,掌握了什么技能 就是一份简历的骨骼,实际例子来证实你掌握这项技能就是简历的肉。骨肉相连,气血才能畅通。有人会说,我没有例子能够证实我掌握这项技能,那你能够反思一下本身,你真的掌握了这项技能吗?

  2:一份优秀的简历,可让面试官看到你简历的第一眼,就明白你想讲述什么,你的擅长点是什么。举个例子,我帮某个学弟改简历,跟他说,你的优点是有比较好的ACM经历,对安全感兴趣,并有必定的基础,并由较好的自学能力。你的简历只要从头至尾把这个思路贯彻到底,就基本没什么问题。把一些乱七八糟的东西所有去掉,必定要让面试官看到你简历的第一眼,脑子天然而然的就把你想表达写出来。最后的结果是,内推系统的内推理由就是:比较好的ACM经历,对安全感兴趣,并有必定的基础。这样的一份简历就是一份成功的简历。

  3:必定要有亮点,其实面试官呢都是但愿在面试的过程当中发现咱们的亮点和优点,从而展开更深层次的交流,可是每每在简历中没有一个让他询问的入口,这样就可能致使他会随意问。随意问的结果是容易遇到本身不擅长的地方,那么GG了。对于亮点,也要多作准备,思考面试官会从哪点切入,并提早作好准备。

  最后补充一句,简历请自动转化为pdf格式!!!真的没人会为了打开你的简历专门下载某个阅读软件。

 

四:如何准备面试笔试:

  最好的准备就是:时刻准备着!这不是抖机灵,而是事实!!除非特别天资聪颖的万分之一,绝大多数人的智力都是通常的,对于某项技能的掌握程度每每和花费的实践成正比。在平时就须要有意识的规划本身的将来,并为之锻炼本身的能力。全部的临场准备都是基于本身的硬实力而言的。固然,这些并不属于本章的主要内容,本章的主要内容是如何在几个月中提升本身的面试能力,顺利拿到offer。

  首先,你须要知道一家成熟的互联网公司究竟须要什么样的应届生:

    1:优秀的人(固然这是废话):具备较多较好的实践经历,或者各类高质量的比赛大奖拿到手软。好比:ACM,CTF

    2:有潜力的人(基础功扎实,自学能留极强)

  根据本身的特色,有意识的在面试过程当中体现出来,那么你的面试就是成功的。固然,怎么体现,这也是个大学问,

  1:这里就会提到:面经。先推荐一个网站 www.nowcoder.com(牛客网),这里面有丰富的面经和足量的实时信息,建议有意进入互联网行业的童鞋有事没事多看看。里面基本囊括了面试过程当中的全部基础知识。以及不少有价值的面试技巧总结。在翻看面经的时候,彻底能够根据面经本身模拟面试一遍,查漏补缺,而不是简单的一扫而过,就这样,在一次次模拟面试中,能够快速的提升本身的面试能力(注意,是面试能力,而不是实际能力)。

  2:深度和广度并行,广度基本肯定了你是否可以经过初试,深度肯定了本身可否经过复试。对于广度而言,只要多看面经,多模拟,多查漏补缺,基本问题不大,而深度就是靠本身的亮点去发散了,这要作到你对你的亮点的知识点理解的很深,这块也能够有针对性的恶补。

  最后抄一下对于以前别人总结的对于硬实力的描述,我的认为总结的很是到位,能够针对性的恶补一下,

  然找工做是应试,要肯定目标,找准重点。若是面试老是失败,那缘由通常都是目标定高了。准备实习不要用很厚很厚的手册书,除非你以前已经通读过一遍,这点很重要,不然你将会浪费大量时间。别人经验贴里所列参考书籍毫不是短短一两个月看完的,若是之前没看过,请不要盲从。:

    • 基础知识:
      1. 算法和数据结构
        1. 数组、链表、二叉树、队列、栈的各类操做(性能,场景)
        2. 二分查找和各类变种的二分查找
        3. 各种排序算法以及复杂度分析(快排、归并、堆
        4. 各种算法题(手写)
        5. 理解并能够分析时间和空间复杂度。
        6. 动态规划(笔试回回有。。)、贪心。
        7. 红黑树、AVL树、Hash树、Tire树、B树、B+树。
        8. 图算法(比较少,也就两个最短路径算法理解吧)
      2. 计算机网络
        1. OSI7层模型(TCP4层)
          • 每层的协议
          • url到页面的过程
        2. HTTP
          • http/https 1.0、1.一、2.0
          • get/post 以及幂等性
          • http 协议头相关
          • 网络攻击(CSRF、XSS)
        3. TCP/IP
          • 三次握手、四次挥手
          • 拥塞控制(过程、阈值)
          • 流量控制与滑动窗口
          • TCP与UDP比较
          • 子网划分(通常只有笔试有)
          • DDos攻击
        4. (B)IO/NIO/AIO
          • 三者原理,各个语言是怎么实现的
          • Netty
          • Linux内核select poll epoll
      3. 数据库(最多的仍是mysql,Nosql有redis)
        1. 索引(包括分类及优化方式,失效条件,底层结构)
        2. sql语法(join,union,子查询,having,group by)
        3. 引擎对比(InnoDB,MyISAM)
        4. 数据库的锁(行锁,表锁,页级锁,意向锁,读锁,写锁,悲观锁,乐观锁,以及加锁的select sql方式)
        5. 隔离级别,依次解决的问题(脏读、不可重复读、幻读)
        6. 事务的ACID
        7. B树、B+树
        8. 优化(explain,慢查询,show profile)
        9. 数据库的范式。
        10. 分库分表,主从复制,读写分离。
        11. Nosql相关(redis和memcached区别之类的,若是你熟悉redis,redis还有一堆要问的)
      4. 操做系统:
        1. 进程通讯IPC(几种方式),与线程区别
        2. OS的几种策略(页面置换,进程调度等,每一个里面有几种算法)
        3. 互斥与死锁相关的
        4. linux经常使用命令(问的时候都会给具体某一个场景)
        5. Linux内核相关(select、poll、epoll)
      5. 编程语言(这里只说Java):
        1. 把我以后的面通过一遍,Java感受覆盖的就差很少了,不过下面仍是分个类。
        2. Java基础(面向对象、四个特性、重载重写、static和final等等不少东西)
        3. 集合(HashMap、ConcurrentHashMap、各类List,最好结合源码看)
        4. 并发和多线程(线程池、SYNC和Lock锁机制、线程通讯、volatile、ThreadLocal、CyclicBarrier、Atom包、CountDownLatch、AQS、CAS原理等等)
        5. JVM(内存模型、GC垃圾回收,包括分代,GC算法,收集器、类加载和双亲委派、JVM调优,内存泄漏和内存溢出)
        6. IO/NIO相关
        7. 反射和代理、异常、Java8相关、序列化
        8. 设计模式(经常使用的,jdk中有的)
        9. Web相关(servlet、cookie/session、Spring<AOP、IOC、MVC、事务、动态代理>、Mybatis、Tomcat、Hibernate等)
        10. 看jdk源码
    • 项目经历
      • 这个每一个人的项目不一样,覆盖的技术也不同,因此不能统一去说。
      • 这里的技巧呢,在下面也会详细说明。
      • 无非是找到本身项目中的亮点,简历上叙述的简练而且吸引眼球,同时本身要很熟悉这个点(毕竟能够提早准备)
      • 最好本身多练,就像有个剧本或者稿子同样,保证面试中能够很熟练通俗地讲出,而且让人听着很舒服。
    • 实习经历
      • 这个很抱歉,由于我是找实习的经历,因此也没有实习经历的讲述经验。
      • 但我想若是你有实习经历,那面试过程的重点也会在实习作了什么上面,因此你们最好对实习所作的工做作一个总结,而且一样抓出亮点,搞懂内部原理,提早锻炼讲述的过程。
    • 其余扩展技能(这个方方面面太多了,所有掌握基本上不可能,只是做为你们其余时间扩充技能的参考)

      • 分布式架构:(了解原理就行,若是真的有实践经验更好)
        • CAP原理和BASE理论。
        • Nosql与KV存储(redis,hbase,mongodb,memcached等)
        • 服务化理论(包括服务发现、治理等,zookeeper、etcd、springcloud微服务、)
        • 负载均衡(原理、cdn、一致性hash)
        • RPC框架(包括总体的一些框架理论,通讯的netty,序列化协议thrift,protobuff等)
        • 消息队列(原理、kafka,activeMQ,rocketMQ)
        • 分布式存储系统(GFS、HDFS、fastDFS)、存储模型(skipList、LSM等)
        • 分布式事务、分布式锁等
      • 脚本语言:(只是做为横向扩充,通常问到linux也会问问shell脚本)
        • python
        • php
        • shell
        • golang
        • ...
      • 大数据与数据分析:
        • hadoop生态圈(hive、hbase、hdfs、zookeeper、storm、kafka)
        • spark体系
        • 语言:python、R、scala
        • 搜索引擎与技术
      • 机器学习算法:
        • 模型和算法不少。不细说了,若是很熟练就去投算法,国内不少公司都算法岗都很稀缺,其余岗能够大概了解下理论。
      • 其余工具的理论和使用:
        • 这个更多了,问的多的好比git、docker、maven/gradle、Jenkins等等,本身须要的话选择性地去学。

 

五:面试技巧:

  第四章主要讲的是一些硬实力,而在本章主要讲的是一些软实力。也就是面试的一些套路:

  1:回答问题不要简单的对和不对,给本身留点余地也给面试官留点余地是吧!

    例:京东hr面(虽然没面到这一面):若是这是你同时有阿里和京东offer,你会选择哪家?

    耿直的说:“确定阿里呀!”。你这样回答估计hr的评价高不到哪里去。

    答:"我以为!不像应届生,更多的是要去创造价值。就实习生而言,更多的是学习,哪里和本身的方向更契合,哪里能学到更多东西就去哪里吧”

    例:华为hr面:你怎么认为加班的?

    耿直的回答:“不喜欢加班”。讲真的,虽然你只是想把华为当备胎,这么回华为还真不给你进备胎池的机会

    答:“对本身热爱的行业,没什么加班不加班直说吧!就好像,一我的喜欢打游戏,不能说他工做努力吧”

  2:千万不要踩雷区,什么都不要过得太过了

    能够适当的开点小玩笑,活跃一下气氛,技术面虽然说是技术面,但给评价的终究是面试官,一个愉快的交流能你加分很多,可是千万别给面试官留下嬉皮笑脸,不学无术的印象(特别hr),那你真的悲剧了。能够适当美化本身写的 东 西,可是不要无中生有,终究只有从头至尾本身写的内心才有底,若是被揭穿了,那是真的悲剧了。雷区的话,这个真的只有本身把握。面试多了天然就有感受了,虽然我面的也很少

   3:转话题

    遇到不会的,有意识的把话题扯到本身擅长的上面,不要耿直的一直聊下去,由于面试官会无心识的把话题扯到他本身擅长的领域,而若是你不擅长那评价真是悲剧了。面试官通常也想找到你的闪光点,而不是使劲的怼你。因此呢,学会转移话题仍是挺重要的

   4:抓住每一个加分点

    通常来讲,面试最后一个问题都是:“我这边问完了,你有什么问题吗?”这个时候,问一些没养分的问题真没要的,总得问一些稍微有养分的问题吧

    例:腾讯终面:“此次面试中,请问一下我有什么不足须要在将来填补和提升的吗?”

    好处:“好为人师”是人的通病嘛!面试官说的愉快,本身过得几率也大,并且还能表现出本身比较好学。固然,还能够从他的对话中,探探口风,看过没过。一箭双雕呀

  5...

  所谓的面试技巧太多了,具体的仍是须要在实践过程多体会,多面试,面试也是一个提升的过程,面试过程当中最容易发现本身的不足,从而查漏补缺,因此,建议每次面试都录好音,而后面试以后多听几遍,多总结多思考,这样才能快速提升。

六:总结

  其它内容想到再说

相关文章
相关标签/搜索