当前位置 博文首页 > 沉默王二:去携程实习了!半年时间,从机械转行 Java,二哥的读
大家好,我是二哥呀。
今天端午节,我带着老婆、女儿、妹妹来青岛了,高铁上,我们谈起了毕业后去哪里工作的话题。老读者应该知道了,我毕业后去的苏州,从个人情感上来说,我是非常喜欢苏州的,不仅景美,人也美,哈哈。
毕业后去哪个城市,其实对于我们程序员来说,还是蛮重要的,这在很大程度上决定了你未来的职业发展。
首先,尽量选择一线城市,比如说北上广深杭,这里的机会多,薪资起点高,技术紧跟潮流。其次,可以选择省会城市,比如说成都、南京、武汉,薪资相对还不错,技术也跟得上,还可以作为长期发展的根据地,没有意外基本上就在这里定居了。
我当时从苏州回洛阳的原因其实很简单,因为——爱情。加上实习的一年时间,我在苏州了工作了三年半,当时刚涨了一波薪资,签了新的合同,在公司的发展前景也很不错。但为了爱情,必须忍痛离开,异地你懂的。
当时对在洛阳的发展其实是挺悲观的,没想到,这些年,凭借自己的努力,发展的还算是有声有色。我身上的这些变化,老读者应该感受得很明显,尤其是身边的一些同学,基本上都觉得我特别不可思议,完全超出了他们的认知程度。
我心里其实对我妹是有规划的,这点她也很清楚,所以她想毕业后去北京做 Java 开发。其实也不一定非要去北京,上海、广州、深圳、成都、杭州这些城市都是可选项。
去这些城市,有一个天大的好处,就是起步的薪资会相对较高。这么说吧,一个水平还算不错的程序员,即便是工作了五六年,在郑州这样的二线城市,能拿到一万五的薪资算是表现好的了。对于北京这样的一线城市来说,情况就完全不同了,如果学历 OK,表达能力强,能击中面试官的痛点,起薪拿到两万是没有问题的,如果还有其他优秀的加分项,拿到的薪水会比这个数目高得多。
退一万步说,即便是拿不到这个数,也会比二三线城市好很多。
薪资拿到这个数难不难,当然是有难度的,但只要找到方法,自己肯去努力,就有很大机会拿得到。给大家晒张图,我之前在票圈提到过。
一个读者,也是洛阳的,刚好是我老乡,半年前给我说,准备自学 Java,还是机械专业的,明年秋招找工作。这不,半年过去了,他就找到了,现在去携程实习去了,薪资水平还不错。
携程和 BAT 这些大厂在薪资上肯定是有差距的,但携程也算是国内能排上号的互联网公司了。考虑到这个读者还是非科班,只花了半年的时间,所以我觉得还是挺牛逼的。
一面的时候他曾给我发消息,说面试官问他 Java 虚拟机栈方面的知识点,没回答上来,我就立马写了那篇 Java 虚拟机栈的文章甩给他,没想到,万万没想到,还真的帮上了忙,二面的时候就回答的很顺利。
其实我也没帮他太多,更多的还是靠他自己的努力!
看到这,肯定有读者按捺不住了,想问二哥,“都问了哪些问题啊,能不能分享一下啊。”那必须滴,二哥已经帮大家问过了。
先说一面的知识点:
再说二面的知识点:
可以看得出,都是非常基础的知识点。我这里有一份 GitHub 上星标 115k+ 的 Java 教程,里面涵盖了 Java 所有的核心知识点,包括 Java 语法、Java 集合框架、Java IO、Java 并发编程和 Java 虚拟机,内容不多,只讲重点。
GitHub 星标 115k+的 Java 教程,超级硬核!
1)集合类,面试经常被问到的知识点有: ArrayList 和 LinkedList 的区别,它们在增删改查时的时间复杂度;HashMap 的数据结构,底层是通过数组+链表实现的,当链表的大厂大于 8 时,转为红黑树,推荐大家看一下这篇文章,美团技术团队出品的。
https://zhuanlan.zhihu.com/p/21673805
看完了这篇,面试官再问 HashMap 基本上就可以对答如流了。
2)多线程并发,面试一般都会问进程与线程的区别、synchronized、volatile、锁、ConcurrentHashMap、CopyOnWrite、线程池、CAS、AQS 等等这些知识点。推荐大家看看我之前给大家推荐过的一份小册子,阿里的几位大佬写的,名字叫《深入浅出 Java 多线程》,多线程并发这块要学习到什么程度呢?我来问一个,在使用线程池时,因为使用了无界队列,远程服务异常的情况下导致内层飙升,怎么解决呢?
3)Java 虚拟机,并发编程和 Java 虚拟机应该说是 Java 的知识体系中最重要,也是最难的两块了,也是面试必问的题目。其实学习 Java 虚拟机不只是为了面试,还能帮我们更深入地理解 Java 这门语言,也能为线上排查问题打下基础。关于 Java 虚拟机的知识点,我用思维导图列一下,大家可以按图索骥,去阅读相对应的文章。
要想学好 Java 虚拟机,必须得啃周志明老师的《深入理解 Java 虚拟机:JVM 高级特性与最佳实践》,目前已出到第三版。如果觉得比较难懂的话,其实可以到 GitHub 上看看我给你推荐的这份读书笔记。
https://github.com/TangBean/understanding-the-jvm
其中 Java 内存管理机制和 Java 虚拟机程序执行需要重点掌握,至于虚拟机性能监控以及故障处理,其实可以放到工作以后再去实践会好很多。
4)框架原理,我建议大家不要对学习框架有任何的抵触,不要总觉得学习 Spring 全家桶很 low,其实不是的,学会了 Spring 全家桶,你就可以上手做练手项目,做了练手项目,你就会感觉学过的那些知识都可以落地了。
学习框架当然不能只停留在会用的层面上,还得懂一些原理,比如说 Spring 的 AOP、IoC、DI 等等,@Guide 哥的《面试突击》解释得很清楚,一起来看一下。
AOP(Aspect-Oriented Programming),也就是面向切面编程,能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。
IoC(Inverse of Control),也就是控制反转,是一种设计思想,就是将原本在程序中手动创建对象的控制权,交由 Spring 框架来管理。DI(Dependency Injection),也就是依赖注入,原来叫 IoC,能让人更加直观和清晰地理解其背后所代表的含义。
如果还不理解的话,可以看看《码农翻身》,里面讲的更生动一些。
5)数据库,面试中最经常问的就是 MySQL 和 Redis。关于 MySQL 的学习,我之前也推荐过学习资料,书的话就是《SQL 必知必会》和《高性能 MySQL》,在线学习网站的话,就上 MySQL Tutorial,内容还是非常全面的,下图是 MySQL 在面试中常见的知识点。
MySQL 的数据是存在硬盘上的,而 Redis 的数据是存在内存中的,所以读写速度非常快,于是 Redis 就广泛应用于缓存了。除了做缓存之外,Redis 也经常用来做分布式锁,甚至消息队列。
像 Redis 的内存淘汰机制、持久化机制、缓存穿透、缓存雪崩等等是面试中经常被问到的点,学习资料的话,推荐看一下老钱的《Redis 深度历险:核心原理与应用实践》。
6)计算机基础的相关知识,这就包括操作系统、计算机网络、数据结构与算法等等。
操作系统,也就是 Operating System,是管理计算机硬件和软件资源的程序,是计算机的基石,像 Unix 是用 C 语言写的。记得大学阶段,最经常用到的一个快捷键就是 Ctrl+Alt+Delete,为了调出 Windows 的进程管理程序,看哪个比较占内存就把它给强制结束掉,免得打游戏的时候电脑卡死,嘿嘿。
操作系统负责的工作有:管理设备、文件读写、控制进程、管理内存等等,算是所有软件中的老大,掌握着生杀大权。推荐的学习资料有《现代操作系统》、《深入理解计算机系统》,两本用来压泡面或者垫显示器的神书。
套用 @Guide 哥在他的知识星球里说的一段话就是:
操作系统中的很多思想和经典算法,都可以在日常开发使用的各种工具或者框架中找到影子。
比如说 Redis 和操作系统的高速缓存就很像,Redis 是用来解决程序处理速度和访问 MySQL 速度不对等的问题,而内存就是用来解决 CPU 处理速度和访问磁盘等外存速度不对等的问题。
现在想想,觉得挺遗憾的,大学阶段没有把计算机网络这门课学好。当时把所有的重心都扑到了 Java 这门编程语言上,但其实我的专业是计算机网络。
像下图中的这些计算机网络的相关知识点也是面试中的常客:
像《TCP/IP 详解,卷 1》是讲解网络协议的经典书,不过学习难度比较大,可以看一看《图解 HTTP》以及《网络是怎样连接的》这两本书,有大量的图片穿插,阅读起来就不会那么枯燥。
数据结构与算法,@程序员吴师兄画过一副思维导图,里面几乎涵盖了所有数据结构和算法书籍中都会讲到的知识点。
常见的数据结构有数组、链表、栈、队列、哈希表、二叉树、堆和图;常见的算法有递归、排序、二分查找、哈希算法、贪心算法、分治算法、回溯算法和动态规划等。
可能很多时候,我们会觉得数据结构与算法不重要,不如直接学习 Java、学习 Python 更直接一点。但我想说的一点是,学习数据结构和算法能让我们学到一种思想:就是如何把现实问题转化为计算机语言来表示(来自《码农翻身》的作者刘欣大佬)。
另外一个很现实的问题是,面试要考,尤其是一些大厂,很喜欢考。所以必须玩得 66 的,ACM 的题,或者 LeetCode 的题目,必须刷到自己都感觉废了的地步:他喵的,BAT 大佬的这份刷题笔记太强了!
最后,二哥必须要说的一点是,月薪两万只是一个数字,每个人的情况都是不同的,不同的城市,不同的公司,不同的面试官,不同的学历,不同的面试表现。
但要学习的内容我觉得还是很具有普适性的,虽然没有总结得很完全,但是我觉得这些都是非常必须的,从去携程实习的这个读者给出的面试题就能看得出。
另外,二哥要强调的一点是,一定要实战能力强,到了实习的时候能独立地把安排的活给完成了。
我是沉默王二,端午安康,大家可以三连支持了!希望大家多来给报喜呀~~~~
代做工资流水公司大连个人流水代做湖州代办银行流水电子版舟山工资银行流水价格咸阳开工资流水单包头自存流水办理佛山流水单开具企业银行流水代开上饶代做银行流水账株洲银行流水修改打印蚌埠代办流水单长春车贷银行流水 多少钱绍兴对公银行流水查询海口代开车贷流水湛江代开薪资流水单湘潭对公银行流水模板芜湖打印公司银行流水泉州转账流水费用包头贷款流水费用台州银行对公流水公司湖州工资流水账单代开揭阳转账流水价格上饶查对公流水兰州办日常消费流水重庆代做薪资银行流水南通个人银行流水开具桂林在职证明图片桂林工资流水账单代做银川制作公司银行流水漳州做自存流水西安查询房贷银行流水香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤