热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

进了小公司的应届程序员如何翻身进入大公司?

我就是小公司应届程序员翻身进的大厂。一、写在前面的话很多老读者都知道,我2018年年底从携程旅行网离职与人合作创业,项目于2019年8月正式上线运营&

我就是小公司应届程序员翻身进的大厂。


一、写在前面的话

很多老读者都知道,我 2018 年年底从携程旅行网离职与人合作创业,项目于 2019 年 8 月正式上线运营,8 月后到 12 月初系统针对之前的一些问题做了第二版的优化和重构。从 12 月初开始工作就不是太忙,于是更新了一下简历,出去面试一下保持自己对技术的敏感度(当然,如果有合适的职位也是可以考虑的)。我求职的职位是资深开发或者系统架构师级别,开发语言优先选 Java,其次是 C/C++。老的读者应该知道,我是 C/C++ 出身,后面由于工作需要开始做 Java,并且专门去携程历练了一段时间自己的 Java 技术。因为厌倦某些小公司的各种不规范和不公开套路操作以及老板的画饼,所以这次只投递了一些大的互联网公司,先后去了字节跳动、360、腾讯、阿里巴巴、饿了么、哈喽单车等。


二、高级面试会问哪些东西?

我期望的薪资是年薪 50W+,当然具体的待遇会综合考虑的,薪资不是主要考虑因素。很多读者可能想知道:这样级别的面试一般会问些什么东西?这里可以大致的给大家做个简单的总结:

1. 如果是业务相关的公司或者部分会问一些业务细节,比如我做的是互联网金融,那么有关联的职位会问一些业务关联的问题;

2. 对于大多数大的互联网企业至少会有三轮技术面试,一般的面试官的情况分为两种:

第一种情况:前两轮是你将来入职所在部门的两位同事,第三轮是所在部门的主管,这种岗位一般是资深开发或者架构师级别,这样的话,前两轮的面试官是与你将来共事的平级同事,三面是你将来的 leader。

第二种情况:第一轮面试官是你将来的共事的同事,第二轮的面试官是将来所在部门的 leader,第三轮面试官是大部门的 leader 或者 CTO,这种岗位一般是架构师或者开发经理,进去后可能会带团队。如果一面二面是你将来入职的平级同事,一般会问一些比较常用或者基本的开发原理,例如对于 Java 来说,jdk 的一些东西,jvm 一些东西,多线程的一些东西,这个其实是简单的考察,如果答得不好可能会直接被 pass 掉,因为基础不行,但是如果你答得好,一面二面(第一种情况)或一面(第二种情况)根本 hold 不住你,会在简单的走过过场后让更高级的二面(第二种情况)或三面(第一种情况)直接来面你。此时的三面(第一种情况)或者二面(第二种情况)会详细的和你聊系统架构方面的,有具体技术细节,也有大的框架组织、开发策略等等。如果你从没真实设计过一个大的框架,自己“杜撰”或者“编造”很容易“惨淡收场”。这里建议想往这方面进步的读者,平常要多站在全局的高度去思考一些架构的设计,理清业务流和信息流,同时多自己造一些基础轮子或者认真的研究一些通用轮子背后详细的原理。对于第一种情形的三面或者第二种情形的二面在聊完技术之后会问一些非技术相关,如你的职业规划、离职原因等等。同样,第二种情形的三面,一般也不会再问你技术方面的问题,更多的也是业务相关的或者其他一些东西,相对来说,这轮面试只要不犯一些低级错误,还是很好过的。3. 如第 2 点所说,在第一轮或者第一二轮面试中,除了特定技术相关的,大公司最喜欢问的就是一些算法和数据结构方面的问题。这里列举几个大家可以感受一下:

字节跳动问我的算法题有两道:

算法一:

一个单链表,实现按给定的步长进行对折,举个例子,对于链表 1->2->3->4->5->6->7->n-1->n,如果给定的步长是 2,那么对折后是 1->n->2->n-1->3->n-2。

算法二:

假设一个有一个栈的 sdk,提供了栈的出栈、入栈、和长度方法,请利用栈的数据结构和方法实现一个队列功能。(这个题目其实就是实现队列的出队、入队和长度方法,栈的操作是先进后出的,而队列是先进先出的,如何利用栈的先进后出实现队列的先进先出)。

腾讯的算法题:

算法一:

现在只有一个计算能力为 1 W的机器,如何较快的从 400 W的帖子中找到热度值最高的 100 个帖子,帖子有热度值、发布时间和 ID。

算法二:

两个长度不一样的链表,从某个节点开始有公共节点,如何高效的找到第一个公共的节点。(是不是很眼熟?)

360 的算法题:

一个无序数组,如果找到数组中所有元素值为 v 的元素,要求实现的时间复杂度不能大于 O(N),空间复杂度必须是 O(1)。

阿里的算法题:

对于给定的 x 对左右括号,请设计出一个函数打印出所有的括号组合形式,举个例子,当 x = 2 时,括号形式为 ()(),(()),当 x = 3 时,括号形式为 ((())),()()(), ()(()),(())(),(()())。

(如果知友对上面的某个算法题有疑问,可以留言)。


三、算法和数据结构是万年不变的基础

这些算法题说不难也不难,说容易也不容易,此话怎讲呢?

对于校招学生或者刚毕业没多久的开发人员来说,他们可能会经常为了面试刷一些题目,所以相对来说,就比较容易;但是对于一些高级职位工作有些年头的社会人士来说,可能很多算法或者数据结构已经忘记得差不多了。但是根据前面描述的几轮面试,正所谓“阎王好过,小鬼难缠”。如果你在一轮二轮面试中这些算法题答得不好,可能就没机会通过前几轮面试见到后面的面试官。

如果你是非科班出身,或者觉得算法和数据结构很难,推荐《算法(第四版》这本书):


链接: https://pan.baidu.com/s/1Hz_XPZ_syCC1g8nUObu9Vg 提取码: woka


BAT 等国内的一线名企,在招聘工程师的过程中,对算法和数据结构都会重点考察是普遍现状。但算法易学难精,我的很多读者技术实力其实不错,但面试时总败在算法这一关,拿不到好 Offer。但说实话,数据结构和算法花点时间,用对方法,很容易解决。

刷算法题也讲究思路和技巧的,推荐《剑指 offer》和《程序员代码面试指南:IT名企算法与数据结构题目最优解》:


链接: https://pan.baidu.com/s/1bZAqakYqlI2ETZ4PbmU-dg 提取码: 15rh



链接: https://pan.baidu.com/s/1dXXSMjGSllMnIYv7ZwZzBQ 提取码: 8hj4


总之,克服恐惧,提高技术内功,功到自然成。


四、我的学习书单

分享下我学习的书单(书不多,更多的注重内功的修炼):

计算机必看经典书籍(含下载方式)​

原创不易,如果有帮助的话,记得点赞和关注 @张小方 哦~


推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 【Java面试】简单说一下你对序列化和反序列化的理解
    Hi,大家好,我是Mic一个工作4年的粉丝,投了很多简历好不容易接到一个互联网公司的面试邀约。在面试第一轮就被干掉了,原因是对主流互联网技术理解太浅了。其中就有一个这样的问题:“简 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 2018深入java目标计划及学习内容
    本文介绍了作者在2018年的深入java目标计划,包括学习计划和工作中要用到的内容。作者计划学习的内容包括kafka、zookeeper、hbase、hdoop、spark、elasticsearch、solr、spring cloud、mysql、mybatis等。其中,作者对jvm的学习有一定了解,并计划通读《jvm》一书。此外,作者还提到了《HotSpot实战》和《高性能MySQL》等书籍。 ... [详细]
  • Java 11相对于Java 8,OptaPlanner性能提升有多大?
    本文通过基准测试比较了Java 11和Java 8对OptaPlanner的性能提升。测试结果表明,在相同的硬件环境下,Java 11相对于Java 8在垃圾回收方面表现更好,从而提升了OptaPlanner的性能。 ... [详细]
  • 2021最新总结网易/腾讯/CVTE/字节面经分享(附答案解析)
    本文分享作者在2021年面试网易、腾讯、CVTE和字节等大型互联网企业的经历和问题,包括稳定性设计、数据库优化、分布式锁的设计等内容。同时提供了大厂最新面试真题笔记,并附带答案解析。 ... [详细]
author-avatar
小猪猫猫晓
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有