IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 直立行走的猴子 -> 正文阅读

[Java知识库]直立行走的猴子

猴子

我是在一家芯片设计公司工作了八年的“高级”嵌入式软件工程师;还曾在华为软件部门干过两年。但是,作为公司的“技术骨干”,直到一年多前,我才开始接触正经的“算法”。

我会熟练的使用Tmux + Vim,是那种老鸟级别的,一个terminal分割成七八个豆腐块来用,全键盘操作。但是,直到一年多前,我才逐渐会写“Quick Sort”。

我了解 Linux Driver 如何编写,了解软硬中断机制,偶尔还能反汇编定位一下 Kernel Panic;几本领域内的英文 Standard 也看得烂熟。但是,直到一年多前,我才知道什么是“Heap”。

我的 C++ 基础还不错,懂得虚表结构,甚至还会写递归template;大部分C++17的新语言特性也能熟练使用。但是,直到一年多前,我才知道经过Heap优化的Dijstra算法的时间复杂度是O(ElogE)。

我想说的是,软件这个行业,我不停把弄着各式新奇玩具,当了十年的猴子而不自知;唯一不会的,就是:直立行走。

可能,你也和我一样?

算法,算个毛?

算法,起初,于我而言,只是进大厂的工具。这么看,没毛病,至少让我有了开始学习的动力。

力扣,华人内卷大法席卷全球的例证,起初,于我而言,只是为了进大厂的工具。但它为我开启了一扇门。

刷题一年多,实不相瞒,最大的动力,就是大厂那诱人的薪资。刷了700多道题,也勉强算是补上了一些短板。但我开始体会到一件惊人的事情:我,一个不懂算法的软件工程师,之所以能在这行业待十年还能混到饭吃,只是因为,这行业在国内,尚未进入到淘汰“落后产能”的阶段。

总有人说起,“算法有毛用啊,工作那么些年,见哪个问题非得靠什么算法才能解决的呢?面试造飞机,工作拧螺丝嘛!”

这话听起来有道理,细想,就如同下面这话一样可笑,”扎马步有毛用啊,打群架这么些年,见哪次干架是靠扎马步赢的?趁其不备,脑袋后面来一板砖儿才是王道!“

你若不从马步扎起,这武林就没有你的一席之地;你,最多就是个打黑拳的黑帮混混。

你,只想当个黑帮混混嘛?你,是否也是即将被淘汰的“落后产能”?

简单撸一撸,进大厂,要准备啥

刷题,是显而易见的,后面详谈。先谈一些别的。

简历

精心准备简历,非常重要。我修改简历的时间,加起来,应该超过80个小时。字斟句酌,反复删减修改,最终留下的,都是最重要的。

如果去的是外企,英文简历的打磨也不是闹的。写简历的几条经验:

  • 一页A4纸,十年内工作经验,不论你做的事多么牛,都是一页。当然,你可以调节页边距、行距,充分利用这一页纸的空间。
  • 简明扼要,突出重点,狭窄专业领域内的术语出现频率不要过高,尽量使用行业通识性词汇
  • 针对应聘岗位调整简历内容描述侧重点,以及不同项目经历的排列顺序
  • 写在简历上的所有技术相关的内容,必须要烂熟,不能被人问到后说不清楚,会让人对你的诚信产生怀疑
  • 使用我这里用到的特定词语加粗的方式,让面试官在没时间看完每个字的情况下,也能抓住重点

技术面试

这不是仅仅指刷题。刷题的部分,后续会详细说明。技术面试,除了做题以外,一般会聊你做过的项目,之前的工作内容,兴趣等等。

总结几个重点:

  • 介绍你之前工作中的某些成果的时候,要尽量简洁易懂。因为,面试官可能没有做过相关领域,你需要短时间内将你所做的事情清晰的告诉面试官。一般的套路是:问题是什么,我做了什么事情,达成了什么效果

  • 要重点介绍你认为最能证明你符合该岗位需求的工作、项目经历,业余兴趣也行。

    • 例如,我这次面试的岗位是云计算硬件相关的。但我没有相关的工作经历。我就介绍说:“我业余时间是一位服务器相关软硬件技术的爱好者,我自己购买了一些二手的服务器硬件,搭建了一台 E5 2692v2/64GB DDR3 REG ECC/ZFS RAID的 Proxmox Server。喜欢捣鼓虚机,也了解 Docker/Container,但对LXC还不太熟悉。”
  • 通过具体的说明,引导面试官提问,尽量不要让面试官太自由发散。

    • 比如,“我会写Linux Driver”这个描述就不好,“我曾经对某某Linux Driver的软中断处理做过某某优化”就好一些。因为针对第一个描述,如果紧接着面试官说:“那请你写一个Linux Driver中字符设备的 ioctl 的实现框架吧”,你也没处儿说理去。因为,是你给了他一个无限大的提问空间。

行为面试

这是非常容易被忽视的一个方面。所谓“行为面试”,举几个例子就能明白:

  • 请举例说明一件令你最自豪的事情
  • 如果你和你的同事/上级发生了意见冲突,你一般如何解决?
  • 你为什么想要离职?
  • 你为什么觉得自己能够胜任你要应聘的这个岗位?

行为面试在youtube上有一些相关的教学视频,看一看会有好处。此处不多谈,要细谈会是另一篇完整的文章。只说两点:

  1. 应对行为面试问题的最重要一点:迅速意识到这个问题是一个行为面试问题。
  2. 行为面试问题没有一般没有唯一正确答案,需要针对你所应聘的岗位和公司来设计你的回答

英语口语

英文是去外企大厂高概率会考察的内容,如果你应聘的部门和国外总部有密切的工作往来,则要求会更高。

这里,我先只给两条关键建议

  • 听力,是英文听说读写四门功课之基础;走路听,通勤听,蹲坑听,睡前听,有奇效。
  • 能KeXue上网最好,天天听英文母语老外说,比英语学习软件效果更好(个人感受,仅供参考)

想纠正自己英语发音的,推荐 Rachel’s English 以及 youglish

刷题!

作为一名35岁的程序员,家有小神兽,公司还经常要求加班,之前接触过的最复杂算法就是“冒泡排序”,刷题,对我来说,还是有点儿难度的。一路走来,我居然刷了15个月的题,总计题量700+。

分解下来,刷题,需要的是:决心,坚持,保密,方法。

决心

最初的三个月,决心是最重要的。因为,这段时间,你什么都不会,偶尔觉得学会了,很快会发现自己还是不会。加班回到家,9点半,疲惫不堪;打开力扣,可能每道题都会蹂躏你。如果决心不够,你很快就会放弃。

你要想尽一切方法来加强你的决心,可以看廉价的鸡汤文,可以畅想未来的美好生活,等等。

坚持

决心的保鲜期可能不会那么久,或者说,“决心”也有下班的时候。当审美疲劳出现的时候,你需要寻找适合自己的方式,让自己机械的坚持下来。力扣的打卡题可能是一种方式,寻找合适的队友可能是另一种方式。

保密

在职刷题,此一条非常重要!如果你打算找队友,一定要找口风靠谱的人!如果你要找人内推,一定要找无论此次内推是否成功,都不会把你的消息告诉任何其他人的靠谱的人!

方法

刷题的方法有很多,我挑几条最重要的出来说。

看书刷题

现在有很多公众号会提供题单,但最好的题单就是《程序员面试金典》和《剑指Offer 第二版》。刚开始刷题,这两本书里面的题,可以作为例题进行学习,边刷边看书。先做其中的简单、中等难度的题目。再搭配选择力扣主站的前200道经典题中的一部分,刷满200题,基本上,你已经见识过了面试中会考察到的算法的50%。

注意,一开始刷题,千万不要自己闷头想,想10分钟,没思路,就看书,看题解。学习,理解,消化。待到你做了100多题后,这个要求可以提高,你可以自己硬刚1个小时,看能不能想出来,想不出来,再看题解。

另外,只有题单是不行的。我建议配合一两本教科书进行学习。《算法·第四版》和《算法导论》是不二选择。这两本书都有对应的视频课程。《算法·第四版》在Cousera上可以查到原作者上的公开课,《算法导论》在MIT的 OpenCourseWareYT 上都有视频。

按类型、频率刷题

同一类型的题目,集中做,类似于中学集中学一个单元的知识点,有很好的强化效果。缺点是:你已经被提示了解题的算法,所以,即便不看题解能自己写出来,也是降低了难度的结果。

力扣会员可以看到出题频率。做高频题,不是为了面试押宝,而是因为这些题是经典。吃透这些题目,更容易做到能够举一反三。

初期刷题的类型:数组,链表,树,排序
初期按频率刷:选前200题中的高频题

数量和质量

未完待续

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-09 11:31:13  更:2021-12-09 11:31:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:22:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码