我当初做出一些重要选择,如弃理从文、弃文从工的原因。 我的校招和社招的经历,以及曾经作为求职者和面试官的一些经历和经验。 分享猪场、有赞和蚂蚁工作感受。 自己的写作经历和经验。 自己的比赛经历和经验。 自己的工作经历和经验,如如何快速熟悉新项目、如何更好地做好项目,如何更好地学习源码等。 工作之外参加的各种活动。
高中的时候,是班级里公认的 “数学小王子” 很多题目都可以给出多种解法。英语也不错, 当时偏理科的分数挺高(数学、物理、生物),偏文科的分数(英语、地理、历史)也不错。
大学选专业的时候挺想选计算机的,但由于对计算机的误解,还是没有选择计算机专业。 由于自己的英语成绩比较好,最后选择了英语专业。
后面在日常学习之余,经常去图书馆看计算机相关的图书,选修计算机相关的课程等。 印象最深的是,《计算机入侵与防御》当时老师演示过某鸽子入侵软件,可以操作别人电脑,挺受震撼。 选修了 《Java 基础》,选择这个课的大多数都是计算机学院的同学,他们认为过于简单,很多人并不会认真完成作业,但由于我比较感兴趣每次都会非常认真完成。 买了电脑之后也自学了 CMD ,易语言和 C 语言等。
有一次 Java 选修课的老师生病了,让我后来的恩师陈老师代课一天。 当时有很多疑问,请教了该老师,有一个问题没能当场解决,就加了 QQ 后面交流。 陈老师发现我对计算机有极其浓厚的兴趣,决定免费指导我。 现在想想挺佩服老师的魄力的,一个英语专业的学生,能不能学好编程真地很难说。 从此,Java 的学习逐步走上了正轨。
老师会介绍大概需要学哪些内容,怎么学,遇到问题请教也会帮及时解决。 当时买的电脑配置很低,只有一个 1G 内存条,使用 Eclipse 都很卡,老师送了我几个内存条并帮装好。 暑假没地方住宿,老师将自己学校附近买的教师公寓的房子免费让我住。 当然,老师对我的帮助远不止这些。
当时自己拿被子席子铺在地上睡,有些胆小,晚上怕黑就一直开着灯学到天微亮,再睡。
遇到问题先自己分析,解决不了就百度,再解决不了的就去技术群里请教一些大佬。 有时候遇到问题卡住了,在技术群里请教大家,会有一些大佬给一些建议,帮助解决了不少问题。
自己也有过些许的自我怀疑,自己真得能学好计算机吗?其实自己也不知道。
但是计算机让我感受到更“实用”,能够感受到“快乐”。或许这就是所谓的“不为了什么”的坚持。
比如电脑中毒了,知道怎么杀毒。同学电脑系统坏了,也经常找我给装系统。英语课的时候老师的 U盘经常中毒,真实文件被隐藏导致无法打开 PPT讲课,我主动请缨,一顿 CMD 指令将隐藏的文件恢复并打开。自学安卓开发,开发一个简单的短信发送软件,使用女友的照片当背景,能够发出短信就非常兴奋。
也曾和自己的另外一个恩师邵老师对此问题有过交流,他挺支持我去学计算机的,很多人毕业都没有找自己专业的工作,这也让我更加坚定了信心。
中间还发生了一件令我印象颇深的事情,负责值班的同学没见过我,询问情况发现我是英语专业,虽然解释了我已报名参赛,但依然不允许我进实验室。最后团队其他同学找学院的老师协调才被允许进入实验室。
这个比赛的作品从创意到核心代码的编写、测试,大多数都是我自己完成,后面也是我去济南山东建筑大学答辩,最终得了当年我们学校在该比赛中唯一的省级一等奖。而这个比赛恰是入学的时候宿舍光盘中涉及的比赛,也恰是入学社团纳新时 IT 精英协会会长拿到的奖项。
虽然编程也学了不少,也有一些比赛获奖,但内心总不够自信,也对就业有些担忧。 计算机相关岗位的要求大都是“计算机及相关专业”,而且也想接受正规的计算机专业学习。 因此,决定跨专业考研。
幸运的是,大学里虽然花了大量的时间来学习编程,但专业课学的还可以,通过了英语专业四级和英语专业八级(当时我本科学校英语专业的班级大概只有不到一半的同学通过英语专业八级)。研究生阶段每年都能拿到一等奖学金,综合成绩一直在年级 TOP 5。
所以,弃文从工,是因为非常痴迷编程,软件更“实用”,也能给自己带来一定的成就感。
本科主要参加了山东省大学生软件比赛(省级一等奖),研究生参加过“挑战杯” 国赛(全国三等奖)、“全国研究生移动终端应用设计创新大赛”(全国二等奖)、“全国研究生智慧城市技术与创意设计大赛” (全国三等奖)等。
下面是结合我自己和身边朋友的参赛经验,总结出来的,希望对大家有帮助。
很多同学参赛的时候没有认真读取比赛的要求,最后因为偏题导致淘汰或者因为忽视评分规则而被打低分。 因此,参加比赛一定要读懂“题意”,这是一个非常重要的前提。
比如对于一些软件比赛来说,尤其是本科的软件比赛,一等奖和特等奖的作品都有一些共性: (1)创意通常符合当下的大的时代背景,如节能减排、环境保护、万物互联、共同富裕等。 (2)有一定的创新性,算法创新、玩法创新、商业模式创新等 (3)代码可读性强、健壮性强、拓展性强 (4)文档详尽,设计文档、测试文档等非常专业而且详尽 (5)配套的 PPT 非常结构化 (6) 配套的视频制作精良,能够凸显自己的设计亮点和技术深度
你的作品的主要创新是什么? 你的作品已经得到了哪些认可或验证? 你的作品的盈利模式是什么? 你的作品亮点有哪些? 你的作品有哪些不够完善的地方?未来的改进方向是什么? 如果 XXX 该怎么办?(想出至少 5 个 “意外”情况)
PPT 要反复修复,不断练习。 多一些图,少一些字;内容要非常结构化,重点突出;台下反复试讲,卡准时间,衔接流畅。 有机会可以找老师给组织一下模拟答辩,感受答辩的氛围。
最初是前面讲到的陈老师推荐我写技术博客。推荐可以写一些学习心得,可以记录一些问题解决的方法,可以写写对某个知识点的理解等,一直坚持到现在。
前面其实也有讲到,自己在学习 Java 过程中,网上的一些文章和少数靠谱的技术群对我帮助挺大的。 因此,我更愿意将自己遇到的一些坑总结到博客中,帮助别人少走一些弯路。有时候自己的同学、同事解决某个问题搜到我的博客,告诉我,我也会非常开心。有时候有网友在文章下留言,卡了好几个小时看到我的博客解决了,也会让我有些欣慰。
很多不错的朋友是通过 CSDN 博客认识的。
写过 《解锁大厂思维:剖析《阿里巴巴 Java 开发手册》》、《再读经典:《Effective Java》 独家解析》 ,两个技术专栏。 主要从方法论的角度讲述《阿里巴巴 Java 开发手册》、《Effective Java》一些规定背后的底层原理。
写过《性能优化方法论》技术电子书(直接搜 “性能优化方法论 藏经阁” 即可)。该书分享自己对性能优化方面的思考;讲述技术层面和非技术层面的优化思想;技术层面如升软件、提硬件;空间换时间、提高资源利用率、串行转并行、利用时空局部性等;讲述性能优化在常见技术中的应用。非技术层面如砍需求、提升用户体验等。
我不太喜欢为了写文章而写文章。 大家平时在学习和工作中,解决了某个疑难杂症,就可以讲自己的分析思路和解决过程写下来。 在平时的工作中,看到一些 BUG 或者 故障,某个问题好的解决方案,就可以将这些经验积累下来。 平时有一些想写的话题,可以作为素材的内容积累下来,等写的时候就会文思泉涌。
社招重点看工作经验,通常会选择技术能力强,项目经验丰富,懂原理,能够快速做项目和解决问题而且沟通能力强的同学。 社招准备好项目相关问题,常见的中间件的原理都要懂,清楚自己的亮点和不足。
之前也做过一段时间的面试官,面试官都是按照公司的面试标准来挑选候选人。 拿到简历后对简历进行圈注,主要看学校、公司,看技术栈和项目经验,会问一些基础问题确保基础足够扎实,也会问一些中间件的原理,还会问项目的亮点、难点,一些地方是如何设计的,为何这么设计,有何局限性等。 有些常见的问题回答不上来,通常会被打上“基础不够扎实”的标签;如果有些功能只会用,不懂原理,则容易被打为“技术深度不够”的标签。项目中很多设计讲述不清楚,很多设计不能给出令人信服的理由,容易被打上“经验不足的标签”。
有赞,电商相关的技术非常成熟,微服务、中台搞得都挺不错。“家庭日” (即周三不加班, 6点就可以跑路,通常大多数团队周五也是晚上6点就可以跑路)也是一大特色。 Java 程序员会发 MacBookPro 携带起来非常方便。
关于更好地熟悉项目 实习、校招、社招初入公司需要上手项目,那么如何更好地上手新项目呢? (1)看需求文档、技术方案和提测文档等。如果有相关的文档,一定先了解清楚,对后面理解项目的逻辑有极大地帮助。 (2)从功能入口往下捋。熟悉功能。找到要需要修改项目对应的 UI 界面,可能是 WEB 页面,可能是移动 APP 界面,也可能是小程序界面,触发相关功能,通过查看核心日志、远程 DEBUG 等方式熟悉核心逻辑。 (3)请教身边的同学。有些地方确实不太熟悉,可以请教之前参与过的人员或者对应的测试同学。平时可以适当分享一些零食,请一些奶茶之类的,后面请教就比较容易。
读目的:该框架是为了解决什么问题?比同类框架相比的优劣是什么?这对理解框架非常重要。 **读注释:**很多人读源码会忽略注释。建议大家读源码时一定要重视注释。因为优秀的开源项目,通常某个类、某个函数的目的、核心逻辑、核心参数的解释,异常的发生场景等都会写到注释中,这对我们学习源码,分析问题有极大的帮助。 **读逻辑:**这里所谓的逻辑是指语句或者子函数的顺序问题。我们要重视作者编码的顺序,了解为什么先写 A 再写 B,背后的原因是什么。 **读思想:**所谓思想是指源码背后体现出了哪些设计原则,比如是不是和设计模式的六大原则相符?是不是符合高内聚低耦合?是不是体现某种性能优化思想? 读原理:读核心实现步骤,而不是记忆每行代码。核心原理和步骤最重要。 读编码风格:一般来说优秀的源码的代码风格都比较优雅。我们可以通过源码来学习编码规范。 读编程技巧:作者是否采用了某种设计模式,某种编程技巧实现了意料之外的效果。 读设计方案:读源码不仅包含具体的代码,更重要的是设计方案。比如我们下载一个秒杀系统 / 商城系统的代码,我们可以学习密码加密的方案,学习分布式事务处理的方案,学习幂等的设计方案,超卖问题的解决方案等。因为掌握这些方案之后对提升我们自己的工作经验非常有帮助,我们工作中做技术方案时可以参考这些优秀项目的方案。
有些同学想让我讲讲对新技术的看法。 很多底层原理都是通的,我们如果能够有扎实的专业基础,如操作系统、数据结构和算法、计算机网络、数据库等非常扎实。各种中间件原理、常见的框架源码读得都恨透。学习新技术会容易很多。 新技术要去评估是否需要学,即使不去深入学习也大概知道它解决什么问题,大概的原理是什么,当工作上确实需要掌握时,快速上手学习即可。
排查问题的能力。如采用二分法定位是前段还是后端的问题;恢复 master 代码,判断是之前的问题还是新引入的问题;采用源码分析、代码调试、日志分析、Arthas 等方式定位问题。
还要掌握做 PPT 的能力。要能够通过结构化的方式设计好 PPT 的骨架,能够重点突出、结论先行,多一些图形少一些文字,将亮点、重点、难点都说清楚,体现出自己的思考和价值。 还要掌握良好的沟通能力,可以看《非暴力沟通》。 还要掌握好项目管理能力。及时识别项目的风险点并解决。
之前参加参加过《阿里巴巴 Java 开发手册》、《码出高效》作者,孤尽老师的 DIY 班。
DIY 班的含义: 其一,Deeply Inspire Yourself 深度激发自己 其二,Do It Yourself 实践出真知
热爱可抵岁月漫长,温柔可挡艰难时光。 热爱编程就会详尽一切办法去努力提升,就更容易不知疲倦。 希望本文对大家的学习和工作能够有一些帮助。 有任何疑问欢迎评论区和我交流。 我近期也会对文章进一步进行优化修改。
请填写红包祝福语或标题
红包个数最小为10个
红包金额最低5元
明明如月学长
你的鼓励将是我创作的最大动力
打赏作者
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。