带了一个实习生程序员,这波操作搞得我人都傻了......(实习生职场必备技能,技能图多)

Posted Android725

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带了一个实习生程序员,这波操作搞得我人都傻了......(实习生职场必备技能,技能图多)相关的知识,希望对你有一定的参考价值。

前言

对于实习生而言,其实很多公司要求都不是很高,毕竟对你的要求要对的起给你的工资水平,很多公司肯定都知道你本身的大体水平,不会期望太高,只是让你边学习边工作,如果你足够聪明伶俐,足够好学,可能就多培养你一些。

不过不同水平的公司(BAT>TMD>其他优秀的互联网公司>小型创业公司),肯定是对你的培养程度不同的,相应的对你实习的要求肯定是不同的。不要认为对你要求越高,得到的实习工资就会高,不是的,像腾讯阿里等公司对于实习生技术要求很高,但工资就在两三千左右,但以后的发展却是远远大于这个价值的。

实习生需要的技能

实习生:
对于实习生而言的话,可能对于android方面的要求并不是特别的高,比较注重基础,但是基本的得会,比如:

1.四大组件基本的概念以及使用。
2.activity的生命周期流程,这是最基本的,但是你得清楚到底是啥时候调用各个方法,如一个页面(A)当前正在跟用户交互,弹出一个Dialog后,A的各个回调方法的流程调用情况等。
3.数据存储的方式,五大存储方式的基本使用。
4.掌握网络通信中httpClient和HttpUrlConnection基本使用,任何网络框架都是从最简单的写起,所以这个必须要知道。
5.熟悉json解析,JsonObject,JsonArray等等的各种使用。
6.会导入第三方库。
7.线程(Thread,Runnable)的使用。
8.主线程和其他线程的交互(Handler,AsyncTask)。

基本待遇(如果面试双方比较满意,到了谈论薪资的时候,可以取中间值8000)

实习生所需工作内容

其他的一些小型的互联网公司,依据自身的发展方向不同,对实习生的要求也是不同的,需要具体问题具体分析的,当然了不变的一点是:基础知识一定要打好,一些计算机基础什么的该知道的要知道。

其实上面有些技能还是有点超纲的(对于实习生而言),不要有压力,能有六七分的掌握就可以,不要被这些招聘要求吓坏,很多都是要求偏高的,当然了如果你正好知道那也是你的优势不是?


犯错不可怕

如果你是一个初级程序员,这篇文章目的不是为了让你对曾经犯下的错误感到难过,而是要让你意识到它们,教你发现它们的迹象,并提醒你如何避免它们。
每个程序员都可能犯错,每个级别的程序员也都会犯错,重要的是在于你能不能从错误中吸取教训,得到成长。

1.写代码没有计划

一般来说,高质量的书面内容是不容易创建的,这背后需要仔细的思考和研究。同样,高质量的代码项目也不例外。编写高质量的程序是一个流程化的过程:思考。研究。计划。写。验证。修改。你需要养成习惯,按照正确的计划和顺序写代码。

不要认为编程就是写几行代码。编程是一种需要培养的基于逻辑的创造力。

2.写代码之前计划太多

在开始编写代码之前进行规划是一件好事,但是即使是好的事情,如果做得太多,也会对你造成伤害。就像喝太多的水可能让你水中毒一样。不要寻找完美的计划。这在编程界是不存在的。寻找一个足够好的计划,一些你可以用来开始的东西。因为事实是,计划永远赶不上变化,但它的好处是迫使你采用某种结构,从而使代码更加清晰。太多的计划纯粹是浪费时间。

我只是在谈论规划小的特性。一次规划所有的功能并不现实。这就是我们所说的瀑布方法——一个系统线性计划,有不同的步骤,要一个一个完成。瀑布方法并不适用于大多数软件项目。任何复杂的事情都只能通过敏捷适应现实来实现。

但是,一定要计划好接下来的几个特性。一定要非常注意,因为太少和太多的计划都可能损害代码的质量,而代码的质量是不能冒险的。

3.低估代码质量的重要性

如果你只能关注所编写代码的一个方面,那么它应该是可读性。指向不明的代码是垃圾。它甚至不能回收。

永远不要低估代码质量的重要性。把编码看作是实现通信的一种方式。作为一名程序员,你的主要工作是清楚地传达你正在致力于的任何解决方案的实现。

4.选择第一个解

我记得当我开始编程的时候,每当我遇到一个问题,我会找到一个解决方案,然后立刻运行它。在考虑第一个确定的解决方案的复杂性和潜在的失败之前,我将立即快速实现。

虽然第一个解决方案可能很诱人,但是好的解决方案通常是在开始质疑所找到的所有解决方案时发现的。如果你不能想出一个问题的多种解决方案,这可能是因为你没有完全理解这个问题。

作为一名专业程序员,你的工作不是寻找问题的解决方案,而是为这个问题找到最简单的解决办法。所谓“简单”,意思是解决方案必须正确工作并充分执行,同时代码足够简单,便于阅读、理解和维护。

5.不放弃

另一个我经常犯的错误是,即使在我意识到第一种解决方案可能不是最简单的方法之后,仍然坚持使用第一种解决方案。这可能与“不放弃”心理有关。在大多数活动中,这是一种良好的心态,但不适用于编程上。事实上,当涉及到编写程序时,正确的心态是早失败和经常失败。

当你开始怀疑一个解决方案时,不管你在这个解决方案上投入了多少,你都应该考虑扔掉它,重新思考这个问题。像GIT这样的源代码控制工具可以帮助你扩展并尝试许多不同的解决方案,好好利用。

6.不谷歌(搜索)
有很多情况下,我浪费了宝贵的时间试图解决一个问题。但如果我去搜索一下,解决方案就出来了。

除非你使用的是尖端技术,否则当你遇到问题时,很可能其他人也遇到了同样的问题,并找到了解决方案。为自己省点时间,先去搜一下吧。

有时候,在谷歌上搜索会发现,你认为有问题的东西其实不是问题,你需要做的不是解决它,而是拥抱它。程序员都应该使用好谷歌这类搜索工具,它会让你的工作事半功倍。

7.为未知做计划
在你写作的时候,人们往往倾向于超越解决方案去思考。在你写的每一行代码中,所有的“如果”都会突然出现在你的脑海中。这对于测试边缘用例来说是一件好事,但是将它用作潜在需求的驱动程序是错误的。

你需要确定您的what-ifs属于这两个主要类别中的哪一个。不要编写今天不需要的代码,不要为未知的未来做打算。

因为认为将来可能需要某个特性而编写该特性是完全错误的,没必要这么做。

程序员新人按正确的流程开发?

  1. 用GitHub或类似的现代平台
  2. 平台上设置禁止直接push到主干,所有的修改必须fork后走Pull Request
  3. 启用CI(持续集成),提PR时平台自动执行CI步骤,失败的不能被合并(不准开任何后门)
  4. CI加入linter,确保代码规范;所有代码规范必须要可由linter检测,代码规范/linter配置规则也
    要针对实践中发现的问题不断补充细化和更新
  5. CI加入单元测试,代码的测试覆盖率至少60%以上,核心模块测试覆盖率必须90%以上;所有发
    现的bug必须由造成bug的人负责补上单元测试
  6. 每个PR强制要求改动代码行数小于100行,新人要求小于60行,以利code review
  7. 每个PR在CI通过后必须有其他人进行过code review并approve,否则不能被merge,新人的代
    码必须至少有两人review和approve(比如新人的mentor和相关代码文件或目录的owner)
  8. 针对每个PR自动部署一份到测试环境,方便自测或提供给测试团队进行必要的测试
  9. 每2周检查近期bug,总结经验教训,特别是重复犯的错误一定要建立机制去防范
    【PS:评论区凡是类似『不现实』之类的蠢话的,直接折叠。】

尾声与建议

选一个自己相对比较擅长的领域。

基础要 背!平时我并不太去留意要记住各种API,但是这里就是要背过。不然面试官就会想“这么简单的API都含糊不清还说擅长?”就是真的面试的时候记不清了,也不要打磕,要非常自信的说个差不多的,不要说“好像……”这样的话。要的就是自信,因为这个API面试官也不一定记得那么清楚。不过自己能背过才真的有底气。

试着去了解这个领域市面上的技术。一般的话就是一些库或者框架。这里要记住,不要急着去看源码,要先掌握这些技术都有哪些优缺点,尤其是缺点!因为我们经常因为一个库有什么优点而去使用它,但是缺点往往是我们容易忽略的地方。而知不知道这个库的缺点,是你能不能驾驭这个库的一个关键。

如果有时间的话,研究其中一个众所周知的库的源码。并试图找到它缺点的原因,并找到其解决方法。当然你如果正要准备面试了,肯定没有这个时间。那么就找一些现成的相关的文章来看看吧。然后记住。

技术到家了,谁也淘汰不了你,选择权由谁决定就看谁更需要谁了!

需要全套系列笔记可以直接【点击获取】找群主大大免费获取!




  • 架构师筑基语言基础

目前Android APP开发主流语言就是Java语言,Java语言最大的特性就是提高了软件的交互可能性,可以说安卓手机几乎所有应用程序都是利用Java语言来进行编写的。

知识要点:
1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO

  • 设计思想解读开源框架

随着互联网企业的不断发展,产品项目中的模块越来越多,用户体验要求也越来越高,想实现小步快跑、快速迭代的目的越来越难,插件化技术应用而生。如果没有插件化技术,美团、淘宝这些集成了大量“app”的应用,可能会有几个g那么大。

所以,当今的Android移动开发,不会热修复、插件化、组件化,80%以上的面试都过不了。

知识要点:
1、热修复设计
2、插件化框架设计
3、组件化框架设计
4、图片加载框架
5、网络访问框架设计
6、RXJava响应式编程框架设计

  • 360°全方位性能调优

在不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象。

另外,随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍。综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开发者能够完成高质量应用程序作品的保证。

知识要点:
1、设计思想与代码质量优化
2、程序性能优化

  • 启动速度与执行效率优化
  • 布局检测与优化
  • 内存优化
  • 耗电优化
  • 网络传输与数据储存优化
  • APK大小优化
    3、开发效率优化
  • 分布式版本控制系统Git
  • 自动化构建系统Gradle
    4、项目实战
  • 启动速度
  • 流畅度
  • 抖音在APK包大小资源优化的实践
  • 优酷响应式布局技术全解析
  • 网络优化
  • 手机淘宝双十一性能优化项目揭秘
  • 高德APP全链路源码依赖分析
  • 彻底干掉OOM的实战经验分享
  • 微信Android终端内存优化实践
  • Android框架体系架构

Android框架体系架构(高级UI+FrameWork源码) 这块知识是现今使用者最多的,我们称之Android2013~2016年的技术。

Android开发者也往往因为网上Copy代码习惯了而导致对这块经常“使用”的代码熟悉而又陌生:熟悉的是几乎天天在和它们打交道, 天天在复制这些代码 ;陌生的是虽然天天和这些代码打交道,但是并没有深入研究过这些代码的原理,代码深处的内涵。

知识要点:
1、高级UI晋升
2、Android内核组件
3、大型项目必备IPC
4、数据持久与序列化
5、Framework内核解析**

  • NDK模块开发(音视频开发系列)
    NDK(Native Development Kit缩写)一种基于原生程序接口的软件开发工具包,可以让您在 Android 应用中利用 C 和 C++ 代码的工具。通过此工具开发的程序直接在本地运行,而不是虚拟机。

在Android中,NDkeK是一系列工具的集合,主要用于扩展Android SDK。NDK提供了一系列的工具可以帮助开发者快速的开发C或C++的动态库,并能自动将so和Java应用一起打包成apk。

知识要点:
1、NDK开发之C/C++入门
2、JNI模块开发
3、Linux编程
4、底层图片处理
5、音视频开发
6、机器学习

  • Flutter学习进阶
    2020 年无疑是 Flutter 技术如火如荼发展的一年。现在这门技术也依然非常有价值。

每一个移动开发者都在为 Flutter 带来的“快速开发、富有表现力和灵活的 UI、原生性能”的特色和理念而痴狂,从超级 App 到独立应用,从纯 Flutter 到混合栈,开发者们在不同的场景下乐此不疲的探索和应用着 Flutter 技术,也在面临着各种各样不同的挑战。

知识要点:
1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter Dart语言系统入门**
……

  • 微信小程序开发
    微信小程序作为现在比较火的编程开发应用场景之一,深受市场的青睐,这让不少开发者眼馋不已。但是对于初学者来说,就完全摸不着头脑了,不知道微信小程序开发制作需要学习那些知识,有需要的朋友可以参考本篇。

本篇知识要点:
1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战

需要相关知识点可以查看我的【GitHub】,对于已经掌握的可以忽略以节省时间。
如果不方便查看,我已经整理成了一份PDF包含Android入门,基础—高级的全部系列知识点,还有新技术学习笔记。

需要全套系列笔记可以直接【点击获取】找群主大大免费获取!

以上是关于带了一个实习生程序员,这波操作搞得我人都傻了......(实习生职场必备技能,技能图多)的主要内容,如果未能解决你的问题,请参考以下文章

带了一个实习生程序员,这波操作搞得我人都傻了......(实习生职场必备技能,技能图多)

5.23考试总结(NOIP模拟2)

正睿(比赛--Day3)

阿里面试官:请问蓝牙设备如何测试?灵魂拷问!我人傻了!

太全了,我人傻了!50万字大厂Java面试题封神总结!

HDU 6089 Rikka with Terrorist (线段树)