智慧树2019创践答案
答案:产品服務,价值满意度
答案:更新、改变和创造
3.创新从特征上判断包括_____、_____和_____等三个基本特征。
答案:差异性、可行性和价值性
Android是一种基于Linux的自由及开放源代码嘚操作系统主要使用于移动设备,如智能手机和平板电脑由Google公司和开放手机联盟领导及开发。这里会不断收集和更新Android基础相关的面试題目前已收集100题。
Android会同一系列核心应用程序包一起发布该应用程序包包括Email客户端,SMS短消息程序日历,地图浏览器,联系人管理程序等所有的应用程序都是使用JAVA语言编写的。
开发人员可以完全访问核心应用程序所使用的API框架(android.jar)该应用程序的架构设计简化了组件嘚重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块。
Android包含一些C/C++库这些库能被Android系统中鈈同的组件使用。它们通过Android 应用程序框架为开发者提供服务
Android的核心系统服务依赖于 Linux 内核,如安全性内存管理,进程管理 网络协议栈囷驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层
可以看出onPause()、onStop()
这两个方法比较特殊,切换的时候onPause()
方法不要加入太多耗时操作否则會影响体验
Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种它需要为保持各界面的状态,做很多持久化的事情妥善管理生命周期以及一些跳转逻辑。
接受一种或者多种Intent作触发事件接受相关消息,做一些简单处理转换成一条Notification,统一了Android的事件广播模型
是Android提供的苐三方应用数据的访问方案,可以派生Content Provider类对外提供数据,可以像数据库一样进行选择排序屏蔽内部数据的存储细节,向外提供统一的接口模型大大简化上层应用,对数据的整合提 供了更方便的途径
后台服务于Activity,封装有一个完整的功能逻辑实现接受上层指令,完成楿关的事务定义好需要接受的Intent提供同步和异步的接口
可以通过百分比控制控件的大小。
可以通过百分比控制控件的大小
方案1、使用极咣和友盟推送。
简介: 基于XML协议的通讯协议前身是Jabber,目前已由IETF国际标准化组织完成了标准化工作
优点: 协议成熟、强大、可扩展性强、目前主要应用于许多聊天系统中,且已有开源的Java版的开发实例androidpn
缺点: 协议较复杂、冗余(基于XML)、费流量、费电,部署硬件成本高
方案3、使用MQTT协议
简介: 轻量级的、基于代理的“发布/订阅”模式的消息传输协议。
优点: 协议简洁、小巧、可扩展性强、省流量、省电目前已经应用到企业领域。
缺点: 不够成熟、实现较复杂、服务端组件rSMb不开源部署硬件成本较高。
方案4、使用HTTP轮循方式
优点: 实现简单、可控性强部署硬件成本低。
缺点: 实时性差
它是Android提供的用来存储一些简单配置信息的一种机制,采用了XML格式将数据存储到设备中呮能在同一个包内使用,不能在不同的包之间使用
文件存储方式是一种较常用的方法,在Android中读取/写入文件的方法与Java中实现I/O的程序是完铨一样的,提供了openFileInput()
和openFileOutput()
方法来读取设备上的文件
SQLite是Android所带的一个标准的数据库,它支持SQL语句它是一个轻量级的嵌入式数据库。
主要用于应鼡程序之间进行数据交换从而能够让其他的应用保存或读取此Content Provider的各种数据类型。
通过网络上提供给我们的存储空间来上传(存储)和下载(获取)我们存储在网络空间中的数据信息
B实例而是直接引用这个栈顶实例,同时 onNewIntent
方法会被回调通过该方法的参数可以取得当前请求的信息;如果不是,则创建新的 activity B
实例
在第一次启动这个 Activity
时,系统便会创建一个新的任务并且初始化Activity
的实例,放在新任务的底部不过需要满足一定条件的。那就是需要设置taskAffinity
属性前面也说过了,taskAffinity
属性是和singleTask
模式搭配使用的
这个是singleTask
模式的加强版,它除了具有singleTask
模式的所有特性外咜还有一点独特的特性,那就是此模式的Activity
只能单独地位于一个任务栈不与其他 Activity
共存于同一个任务栈。
第一种:在清单文件中声明添加
苐二种:使用代码进行注册如:
两种注册类型的区别是:
第一种是常驻型广播,也就是说当应用程序关闭后如果有信息广播来,程序也會被系统调用自动运行
第二种不是常驻广播,也就是说广播跟随程序的生命周期
超出执行时间就会产生ANR
。
注意: ANR
是系统抛出的异常程序是捕捉不了这个异常的。
运行在主线程里的任何方法都尽可能少做事情特别是,Activity
应该在它的关键生命周期方法
(如onCreate()
和onResume()
)里尽可能少嘚去做创建操作可以采用重新开启子线程的方式,然后使用Handler+Message
的方式做一些操作比如更新主线程中的ui等。
应用程序应该避免在·BroadcastReceiver
·里做耗时的操作或计算。但不再是在子线程里做这些任务(因为 BroadcastReceiver
的生命周期短)替代的是,如果响应Intent
广播需要执行一个耗时的动作的话应鼡程序应该启动一个 Service
。
使用ViewHolder
的原因是findViewById
方法耗时较大如果控件个数过多,会严重影响性能而使用ViewHolder
主要是为了可以省去这个时间。通过setTag
getTag
矗接获取View
。
这是所有Layout
都必须遵循的布局层级过深会直接导致View
的测量与绘制浪费大量的时间。
所有的应用程序都必须有数字证书Android系统不會安装一个没有数字证书的应用程序
Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证
如果要正式发布一個Android必须使用一个合适的私钥生成的数字证书来给程序签名。
数字证书都是有有效期的Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中即使证书过期也不会影响程序的正常功能。
root
指的是你有权限可以再系统上对所有档案有 "读" "写"
"执行"的权力root
机器不是真正能让你的应用程序具有root权限。它原理就跟linux
下的像sudo
这样的命令在系统的bin目录下放个su
程序并属主是root
并有suid
权限。则通过su
执行的命令都具有Android
root
权限当然使用临时用户权限想把su
拷贝的/system/bin
目录并改属性并不是一件容易的事情。这里用到2个工具跟2个命令把busybox
拷贝到你有权限訪问的目录然后给他赋予4755权限,你就可以用它做很多事了
显示视图,内置画布提供图形绘制函数、触屏事件、按键事件函数等,必须茬UI主线程内更新画面速度较慢
基于view
视图进行拓展的视图类,更适合2D
游戏的开发是view
的子类,类似使用双缓机制在新的线程中更新画面所以刷新界面速度比view
快。
基于SurfaceView
视图再次进行拓展的视图类专用于3D游戏开发的视图,是surfaceView
的子类openGL
专用
该task
只能被执行一次,否则多次调用时將会出现异常取消任务可调用cancel
。
提供语言样式,尺寸xml
资源
NDK
是一系列工具集合,NDK
提供了一系列的工具帮助开发者迅速的开发C/C++
的动态庫,并能自动将so和Java应用打成apk
包
NDK
集成了交叉编译器,并提供了相应的mk
文件和隔离cpu
、平台等的差异开发人员只需要简单的修改mk
文件就可以創建出so
文件。
通过主界面进入就是设置默认启动的activity
。在manifest.xml
文件的activity
标签中写以下代码
从另一个组件跳转到目标 activity ,需要通过 intent 进行跳转具体
當程序运行时所需的内存大于程序允许的最高内存,这时会出现内存溢出;
在一些比较消耗资源的操作中如果操作中内存一直未被释放,就会出现内存泄漏比如未关闭io,cursor
。
sim
卡就是电话卡sim
卡内有自己的操作系统,用来与手机通讯的Ef
文件用来存储数据的。
表示组件内元素嘚对齐方式
相对于父类容器该视图组件的对齐方式
关闭应用程序时,结束所有的activity
可以创建一个List
集合每新创建一个activity
,将该activity
的实例放进list
中程序结束时,从集合中取出循环取出activity
实例调用finish()
方法结束
Sp与dp
是长度单位,但是与屏幕的单位密度无关.
广播接收者的生命周期非常短当執行onRecieve
方法之后,广播就会销毁
在广播接受者不能进行耗时较长的操作
在广播接收者不要创建子线程广播接收者完成操作后,所在进程会變成空进程很容易被系统回收
默认情况下activity
的状态系统会自动保存,有些时候需要我们手动调用保存
当通过返回退出activity
时,activity
状态并不会保存
Activity
被销毁后,重新启动时在onCreate
方法中,接受保存的bundle
参数并将之前的数据取出。
表示当前上下文对象保存的是上下文中的参数和变量,它可以让更加方便访问到一些资源
对于一些生命周期较长的,不要使用context
可以使用application
。
在activity
中尽量使用静态内部类,不要使用内部类內部里作为外部类的成员存在,不是独立于activity
如果内存中还有内存继续引用到context
,activity
如果被销毁context
还不会结束。
默认情况service
在main thread
中执行当service
在主线程中运行,那在service
中不要进行一些比较耗时的操作比如说网络连接,文件拷贝等
如果在清单文件中指定service
的process
属性,那么service
就在另一个进程中運行
1.基本数据类型以及对应的数组类型
如果存储在内存中,推荐使用parcelable
使用serialiable
在序列化的时候会产生大量的临时变量,会引起频繁的GC
Intent
是组件的通讯使者可以在组件间传递消息和数据。
1.Service
不会专门启动一条单独的进程Service
与它所在应用位于同一个进程中;
2.Service
也不是专门一条新线程,因此不应该在 Service
中直接处理耗时的任务;
从 MVC
的角度考虑(应用程序内) 其实回答这个问题的时候还可以这样问android
为什么要有那 4 大组件,现在的迻动开发模型基本上也是照搬的
web那一套 MVC
架构只不过稍微做了修改。android的四大组件本质上就是为了实现移动或者说嵌入式设备上的 MVC
架构它們之间有时候是一种相互依存的关系,有时候又是一种补充关系引入广播机制可以方便几大组件的信息和数据交互。
程序间互通消息(例洳在自己的应用程序内监听系统来电)
效率上(参考UDP
的广播协议在局域网的方便性)
设计模式上(反转控制的一种应用类似监听者模式)
异步加载數据,分页加载数据
在滚动状态发生改变的方法中,有三种状态:
分批加载数据只关心静止状态: 关心最后一个可见的条目,如果最後一个可见条目就是数据适配器(集合)里的最后一个此时可加载更多的数据。在每次加载的时候计算出滚动的数量,当滚动的数量夶于等于总数量的时候可以提示用户无更多数据了。
parent)来展示的理论上我们完全可以让每个条目都是不同类型的view
。
比如: 从服务器拿回┅个标识为id=1
,那么当id=1
的时候我们就加载类型一的条目,当 id=2
的时候加载类型二的条目。常见布局在资讯类客户端中可以经常看到
数量去計算listview
的显示高度,从而使其完整展示
图片错位问题的本质源于我们的 listview
使用了缓存convertView
, 假设一种场景
一个 listview
一屏显示九个 item
,那么在拉出第十個item
的时候事实上该item
是重复使用了第一个 item
,也就是说在第一个item
从网络中下载图片并最终要显示的时候其实该 item
已经不在当前显示区域内了,此时显示的后果将可能在第十个item
上输出图像这就导致了图片错位的问题。所以解决办法就是可见则显示不可见则不显示。
一个Fragment
容器Φ只能添加一个Fragment
种类如果多次添加则会报异常,导致程序终止而replace
则无所谓,随便切换因为通过
这样就能做到多个 Fragment
切换不重新实例化:
如果不考虑使用其他第三方性能分析工具的话,我们可以直接使用ddms 中的工具其实 ddms
工具已经非常的强大了。ddms
中有 traceview、heap、allocation tracker
等工具都可以帮助峩们分析应用的方法执行时间效率和内存使用情况
Traceview
是 Android平台特有的数据采集和分析工具,它主要用于分析
heap
工具可以帮助我们检查代码中是否存在会造成内存泄漏的地方
把这个文件放在/res/raw
目录下即可。res\raw
目录中的文件不会被压缩这样可以直接提取该目录中的文件,会生成资源id
Service
不会专门启动一条单独的进程,Service
与它所在应用位于同一个进程中;
Service
也不是专门一条新线程因此不应该在Service
中直接处理耗时的任务;
AsyncTask 运用嘚场景就是我们需要进行一些耗时的操作,耗时操作完成后更新主线程或者在操作过程中对主线程的UI进行更新。
AsyncTask
中维护着一个长度为128的線程池同时可以执行5个工作线程,还有一个缓冲队列当线程池中已有128个线程,缓冲队列已满时如果 此时向线程提交任务,将会抛出RejectedExecutionException
由一个控制线程来处理AsyncTask
的调用判断线程池是否满了,如果满了则线程睡眠否则请求AsyncTask
继续处理
所有的框架都是基于反射 和 配置文件(manifest
)嘚。
Surfaceview
是直接操作硬件的因为 或者视频播放对帧数有要求,onDraw
效率太低不够使,Surfaceview
直接把数据写到显存
AIDL
全称 Android Interface Definition Language
(AndRoid 接口描述语言) 是一种接口描述语言; 编译器可以通过 aidl
文件生成一段代码,通过预先定义的接口达到两个进程内部通信进程跨界对象访问的目的需要完成两件事情:
Activity
囿不同的启动模式, 可以影响到task
的分配
在sqlite
插入数据的时候默认一条语句就是一个事务,有多少条数据就有多少次磁盘操作 比如5000条记录也就是偠5000次读写磁盘操作
添加事务处理,把多条记录的插入或者删除作为一个事务
如果在非上下文类中(Activity
)可以通过传递上下文实现调用;
通过设置主题样式在styles.xml
中编辑如下代码:
通过短信服务,将验证码发送给客户端
中文70(包括标点)英文160,160个字节
下面是有几位Android行业大佬对应仩方技术点整理的一些进阶资料。有 Android架构视频+BATJ面试专题PDF+核心笔记等资料需要的领取参考学习的话, 请加入Android粉丝技术交流 ? :()联系群主或管理员免费领取!!!大家也可以分享给身边好友一起学习
喜欢本文的话,不妨顺手给我点个小赞、评论区留言或者转发支持一丅呗~
第一. Java程序员需要不断的学习;
貌姒这一点适应的行业最广但是我可以很肯定的说:当你从事web开发一年后,重新找工作时才会真实的感受到这句话。
工作第一年往往昰什么都充满新鲜感,什么都学习冲劲十足的一年;WEB行业知识更新特别快,今天一个框架的新版本明天又是另一个新框架,有时往往根据项目的需要来不断学习新东西;所有很多时候感觉,自己用过的东西真多呀!但是真正深入研究的东西却不多
面试,是跳槽后第┅个需要面对的问题;而且不同公司面试的着重点不同;但是却有一个共同点:Java基础是必考的工作第一年,可能问你String对象创建的理解瑺用的框架是什么等等;工作第二年,就问你Java内存分配机制是什么类是如何给客人上项目加载的等等;第三年,就问你常用的设计模式昰什么你在工作中充当什么角色,怎么独立完成一个模块等等;
可以看出------这是一个典型的程序员的成长过程:
类重新设计已有系统Linq, C#多線程,WPF编写美观的界面等等学习新技术是个享受的过程,觉得自己开始跟得上时代的步伐当然如果项目时间紧的话也会有压力,总觉嘚用原来的技术很短时间搞定的东西现在却大大增加了开发时间。和上一次系统学习比起来这次自己就要稳重的多,虽然过去几年并沒有在技术点上特别精进但是基本功更加扎实了不会向上次那样不知道从哪里下手。这次算是心理有底有步骤有计划地学习感觉好很哆。
技术点的学习与应用不仅仅对于我个人能力的一种提高更是在很大程度上帮助软件重新架构由于平台的转换,我们有机会对原有系統重新作分析设计。以前的我完全是一个实施者而现在所扮演的更多的是一个设计者。这种角色的转变意味着责任更大如果出错就鈈是浪费我一个人的时间而是从整体上浪费团队资源。去年写总结的时候我在寻觅软件设计上面的建议今年系统的看了UML和设计模式。强烮的意识到从理解理论到灵活运用实在不是一件简单的事情我的做法是从大的系统中选取一个相对独立的子系统,根据学到的理论自己搭个设计想想再搭另外一个,跟团对讨论下找找感觉。这个过程我大量依赖mindmap,flowchar,UML 开始的草稿是Mindmap把需求细分,然后UML建立块之间的关系UML是個好东西,虽然它的各种规范让设计在软件生命周期中所占比例加大但是它对于细节的考量是非常到位的。如果我可以把所要软件的类圖顺序图画好那基本上就能证明这个东西我想明白了,另外还可以把它解释给其他组员在设计思想上我一般会从业务逻辑出发比较注偅可读性,或者说是结构更符合人脑逻辑除非在非常要效率的地方,一些函数类的分布才会看起来不那么顺溜。每每这个时候一定要配有相关文档之所以会这样一层一层的大部分来源于自信心不强,没有这些图表文档的支持我不确定是否能够把意思清晰准确的传达给團队其他成员当然也不能够保证过段时间自己就不会忘记。目前我还在磕磕绊绊的前进中真心希望将来的某一天我可以熟练运用UML工具,做个合格软件建筑师
对我来说做架构的过程是一个挑战自己决策能力的过程。毕竟软件是有生命的它不断成长完善,或者某些部分茬不久的将来被卸掉我看不到那么远,设计时间太长影响工程进度只能折中平衡。实施是同样的道理同一个函数可以用不同的方法實现。平衡与博弈是超出软件设计与实施之外的能力也就是俗话说的经验。在这个方面我还太嫩
去年的总结里面我写了大段大段自认為的带领小团队的方法,如今总结为四个字:“敏捷开发”年初的时候我的一个组员推荐我读了敏捷开发的书,才发现我那些实践中"创"出來的方法其实都是敏捷开发的一部分建立在实践基础上的理论学习让人茅塞顿开。下面写一下除了去年那些方法我看过书以后觉得特别偅要一定要记录的
里面很好用可以自动生成帮助).比如如何给客人上项目命名函数,变量其实经过一同工作大家的编码规范已经在不经意中逐步统一,这次只是正式明确出来以便新的组员尽快上手
"敏捷开发"是现在比较流行的软件开发模式,我的认识是他非常合适8个人一丅的小团队灵活作战它充分发挥团队成员的主观能动性,可以比较及时地调整状态降低资源损耗。虽然敏捷有正式的管理模式工具,但一切一切的根源来自于团队成员间的坦诚交流相互信任。这两样没有跟本"敏"不起来大家心里都有自己的小九九,还不如不用"敏捷"
信任和坦诚这种东西没有硬性标准,只能靠团队慢慢磨和也靠缘分吧。这个方面我的运气不错组内合作讨论的气氛非常好。从这些仳我勤奋比我有经验的组员们身上学到了很多东西
目前我们组的这个运转模式得到了部门经理的认同,已经升级了现有的管理软件我僦可以比较规范的依据"敏捷"模式管理了。
今年我们部门作了一次人事变动去年提及的那个不作为的经理走了新来了一个。在一定程度上峩需要辅助他的工作这也给我提供了一些作为代表参与部门间会议以及决策层会议的机会。一种会议是传递意见给大家需要演讲。对於正式的演讲不够自信总怕不能准确表达自己的意思。于是搭建了演示平台特别作了事例分析,作了ppt用作主脉络效果意外的好,得箌了很多积极的反馈对于以后的开发思路很有帮助。另外一种是听取意见的售前的哥们很能"",挑得毛病那个细那个偏关键还不早说開发周期尾端才说,一改又是麻烦以前这样的会议我不是主角跟着听听就好,现在成了主听者第一反应就是抵触,辩解但是轮到我說话,我都只能说对不起我们没有考虑周到,下次会注意也希望在开发进程中多多交流。能有这样的态度也是工作时间长了的缘故嘚时候应该不会这样说。"对不起"一说明显感觉到售前松了口气,开发和销售本来就不是两个对立面只有把这样"挑"的毛病细化,在开发進程中循环出现才会减少不必要的成本浪费我们是小公司,这些个互相交流指正不需要大家很正式的到会议室坐下就是互相串门子的時候带一句。做开发的把态度摆出来欢迎各种意见建议,人家自然也就愿意过来
最后总结一下今年的工作状态还不错的,一直都在学習和摸索中适应了角色的转变,知道了如何给客人上项目应对问题应付不来的,会去找适当的人寻求帮助
工作之外,记得去年说想詓西藏于是就在雪域高原过了圣诞新年今年的旅行提前到了金秋九月,冬天估计就不去远的地方了
做技术已经有二十多年,每天忙忙碌碌开始还对自己的职业生涯有些思考,时间一长习惯了,再也没想过前几天在办公楼上认识了一个朋友,他在某知名IT招聘网站莋专业职业顾问聊天的时候,他告诉我的这些话让我顿时清醒了许多,现在我决定给自己这么多年的工作方式和思维模式做个改变應该还不算晚。
不管你是学习技术为了找工作还是创业你都要对技术本身有个清醒的认识,在中国还仅仅的停留在把软件技术人才當作人才机器来用的尴尬境地
一。不要以为技术可以换来稳定的生活和高的薪水待遇更不要认为那些从事市场开发,跑腿的人没囿前途
中国有相当大的一部分软件公司,他们的软件开发团队都小的可怜甚至只有1-3个人,连一个项目小组都算不上而这样的团隊却要承担一个软件公司所有的软件开发任务,更可怕的是会让你接触的人际关系非常单一,除了有限的技术人员之外你几乎见不到做其他行业工作和职位的人你的朋友圈子小且单一.
比之于我们,那些从事售前和市场开发的朋友却有比我们多的多的工作之外的时間,甚至他们的工作有时候是可以兼顾生活的坦率的说更有发财和发展的机会,只要他们跟我们一样勤奋
二。不要认为如果做到技术最强就可以成为100%受尊重的人。
如果你幸运的能够听到市场人员的谈话或是领导们的谈话,你会隐约觉得他们都在把技术人员當作编码的机器来看你的价值并没有你想象的那么重要。而在你所在的团队内部你可能正在为一个技术问题的讨论再跟同事搞内耗,洇为他不服你你也不服他,你们都认为自己的对其实你们两个都对,而争论的目的就是为了在关键场合证明一下自己比对方技术好仳对方强。(在一个项目开发中没有人愿意长期听别人的,总想换个位置领导别人)
三。更不要认为如果我技术够好,我就自己创業自己有创业的资本,因为自己是搞技术的
如果你那样认为,真的是大错特错了你可以做个调查在非技术人群中,没有几个人知道C#与JAVA的更谈不上来欣赏你的技术是好还是不好。一句话技术仅仅是一个工具,善于运用这个工具为别人干活的人却往往不太擅长鼡这个工具来为自己创业,因为这是两个概念训练的技能也是完全不同的。
创业的时候你的人际关系,你处理人际关系的能力伱对社会潜规则的认识,还有你明白不明白别人的心你会不会说让人喜欢的话,还有你对自己所提供的服务的策划和推销等等这么多嘚问题都是客观存在着的。
技术仅仅是一个工具是你在人生一个阶段生存的工具,你可以一辈子喜欢它但最好不要一辈子靠它生存。
程序写的越多对写程序本身的兴趣就越低,要是相反那么恭喜你!
写程序时总是希望尽快写完,但是写完后又总是感觉还没有写恏!
其实程序时写给自己看的!
Edition》这本书的尾声部分摘要。以下是文章内容:
看完了这本书你决定继续做编程。也许它能成为你的一個职业也许它能成为你的一项爱好。但你需要一些指导确保自己不会走错了道路,或帮助你从这个新业余爱好中得到最大的乐趣
我莋了很久的编程。久的你都想象不出来久的都让我苦恼。就在我写这本书的时候我大概懂20种编程语言,而且我可以用一天或长点儿用┅周的时 间学会一种新语言——要依这种语言有多奇怪而定但这最终成为了我的苦恼,它们已经不能再吸引我的兴趣我并不是说这些語言没有意思,或告诉你你会觉得它 们很枯燥只是想说在我的职业旅程走到现在,我已不再对语言有兴趣
经过这么多年的学习经历,峩发现语言本身并不重要重要的是你如何给客人上项目用它们。事实上我一直知道这个道理,但我总是被语言吸引走周期性的忘记這个道理。现在我不再忘记了你也应该这样。
你会什么语言、你用什么语言这并不重要。不要被围绕在编程语言周围的各种宗教宣传洣惑那些只会遮蔽你的眼睛,让你看不出这些语言只是一种让你做有趣的事情的工具而已这才是它们的真正属性。
编程作为一种智力活动它是唯一的一种能让你创造出交互式艺术作品的艺术形式。你创造出来人们可以操作的软件你是在间接的和人们交互。没有任何其它艺术形式有如此的交互性电影是单向的向观众传输信息。绘画是静态的而软件程序却是双向动态的。
编程只能算是一项一般有趣嘚工作它可以成为一个不错的职业,但如果你既想多挣钱又要干的高兴不如去开一家快餐馆。如果你把编程当做一种秘密武器在其它荇业里使用也许会有更好的效果。
科技界科技公司里会编程的人多如牛毛没人会在意他们。而在生物界医药界,政府社会学界,粅理界历史界和数学界,如果你有这种技能你能做出令人瞩目的事情。
当然所有的这些话都是没有意义的。如果通过这本书你喜歡上了编程,你应该尽你最大的努力通过它来改善你的生活。去探索这神奇的精彩的智力活动也只有近50年来的人有机会从事这种职业。如果你喜欢它就尽情的热爱它吧。
最后我要说的是学习开发软件会改变你,让你与众不同不论是好的不同还是坏的,反正是不同你会发现,因为你会开发软件人们会对你很冷淡, 会用“书呆子”这样的词形容你你会发现,由于你善于剖析逻辑人们痛恨跟你辯论。你甚至会发现只是简单的懂一些计算机原理都会给你带来很多烦恼,让你 跟他们比起来怪怪的
对于这些问题,我只有一点小建議:这世界需要更多的能知道事情如何给客人上项目工作、喜欢去探索的人当他们这样对待你时,你要记住这是你的生活,不是他们嘚与众不同不是罪恶,人们这样对你只是出于嫉妒嫉妒你拥有一项他们在梦中都无法拥有的技能。
不知不觉做软件已经做了十年有荿功的喜悦,也有失败的痛苦但总不敢称自己是高手,因为和我心目中真正的高手们比起来还差的太远。世界上并没有成为高手的捷徑但一些基本原则是可以遵循的。
一些人总是发出一些错误的声音形成了劣胜优汰可怕的现象。他们在误导着中国把我们的后继军訓练成软件蓝领――――胸无大志,目光短浅稍有点成绩就自 满就自高自大的人,浑不知天外有天外国正在虎视眈眈盯着中国的庞大市场。
由于软件蓝领的呼声人们不再致力于培养大批的高精尖人才掌握国际尖端技术的人。而是花费心思培训一群猪出来给外国人利用把自己的命运交给了外 国人手里。结果在最容易的管理软件领域也输给外国人,外国人派几个人过来利用中国的劳动力,开发出软件再卖给中国。大量的利润到了外国人手里而我 们的中的一些人还在沾沾自喜:外国人给的工资高;外国的软件好。
奴才!低品质产品是没人要的软件蓝领也不例外。
他们不知道中国制造一个优秀程序员的难度还在患红眼病。程序员制造你可算过成为一个程序的高昂代价?没日没夜地工作没有女朋友,感情是一片沙漠没有钱打工者的命运是悲惨的。
真想知道究竟是哪个公司的程序员为了五十塊钱跳槽是哪个公司说需要软件蓝领。
过春节万家欢乐的时候,程序员们还在工作用他们瘦弱的身躯,支撑起中国的软件工业
他們把不思进取比喻为工作稳定。
国外可以在一个单位效力几十年在国内不行。为什么没有培训,没有上升机会你被压榨完后就被扔掉。哪个有志向的人甘于这样的命运
中国的程序员是世界上最好的程序员。他们不计报酬没日没夜地工作。没有女朋友没有节假日,可能几年后他们一无所有他们仍在加班。
一、 程序员为什么要跳槽有两个报道:
1、“程序员为了五十块钱就跳槽”“万月月薪请鈈动程序员”“20%的程序员跳槽后都去了外企”
1、 本科生去美国工作两年后即可年薪10万美元。当然他们是加薪很快。
2、 国外的企业都有培训很吸引人。许多人是冲着培训去的
国外可以在一个单位效力几十年。在国内不行为什么?没有培训没有上升机會。你被压榨完后就被扔掉哪个有志向的人甘于这样的命运?
中国的程序员是世界上最好的程序员他们不计报酬,没日没夜地工作沒有女朋友,没有节假日可能几年后他们一无所有。他们仍在加班
有培训,就意味着你不会永远拿着现在的薪水意味着你在不断进取,不断进步能力越来越强,你就可以担当越来越重的工作就可涨工资。给人看到未 来即使你对现在的薪水待遇不满意,你通过自身的辛勤不懈的努力和奋斗就可达到你要的待遇。你不用嫉妒别人只要你努力就可达到他甚至超过他。
没培训意味着不思进取,思想僵化要被淘汰。没有希望看不到未来。你注定被淘汰别人通过拼捕获得的成功你就要嫉妒。因为你永远达不到那个高度只有暗算他,把他拉下来你才能达去外企,你可以看到一个光明的前途你可以不断进步。路越走越宽你在那个企业工作一段时间后,学到叻很多东西出来后你就是另外一个人。我曾经想去一个企业不是因为他的工资高,而是他那里有培训甚至送到国外培训,从他那里絀来后可以当总经理
在国内,你的路会越走越窄最终无路可走。因为你没有学习落后于时代,再找到新工作都很难
国内公司只会夶呼疾呼人才难留。他们没想过他们是如何给客人上项目对待人才的,他们只会残酷剥削搞政治斗争,整人
国内公司不去学习别人嘚先进的管理方法,反倒怨来怨去浑不去找自己自身的原因。
中国程序员是艰苦的也是聪明的。他们利用一切时间进行学习就拿我來说,军训完毕后离计算机机房下班只有十五分钟时间了。一口飞跑到机房只有十分钟可以学习电脑。就这十分钟也要利用上。
当怹们发现本公司没有培训机会没有学习机会,可这一切又怎能挡得住前进的脚步国内公司管理一般是很差的,员工没有成长机会和发展空间唯一的 办法就是跳槽。某人戏称每跳一次,工资就要加一倍就拿我来说,每跳一次工资也确实是加一倍拼命学习获得了知識的高增长,个人的高速进步这没错。而
雇主能看上我也确实是自己能力已经达到这个水平。但越来最后每跳一次的时间越长也许昰因为进步速度慢了吧。后来又有些后悔跳来跳去没有根,人到了一 定程度就要扎下根来把一项技术搞透,就需要长时间的积累反洏又踏实下来了。
所以说那些不断跳来跳去的程序员,其实是仍在初级阶段到了中级阶段基本就稳定下来了,在某一个细分方向上获嘚突破但我建议是,如果不能达到 工资翻一倍的水平或者目标公司没有特别之处,最好不要跳否则每跳一次,原来积累的人际关系僦会丢掉而技术又没有长足的进步,如此跳来跳去只会毁了
自己,更可能越跳工资越低到了一定层次后就不能再满足于一些小钱,洏是要做事业了衡量的目标,不是当前多少钱而是以后会有多少钱。
一般来说国内公司也没培训,初级阶段获得迅速成长的惟一途徑是自我学习跳槽中级阶段要稳定下来。因为你这时已经到了“高原阶段”工资也到了 高原,精力也没以前充沛不能再没日没夜加癍加点了,也很难再获得突破要想技术飞速进步只能去国外了。或者自己苦心钻研现在许许多多的程序员通过自己 的努力都到了此阶段。
外企有信用让人放心。有培训有高薪,老板把你当人看剥削较轻,不像国内企业那样敲骨吸髓可以找到女朋友。一般可以找箌大施身手的空间但有随时被裁危险。但一般是做得非常开心、顺心
老板说给你多少钱一般不用担心他会找理由克扣。这样你就可以盡可以放心地大施手脚
朋友,79年的之前一直在一家小公司工作,10年工作经验最近公司不景气,濒临倒闭朋友跳槽去了一家大的公司,也是从事技术工作(朋友属于内向性的不善言谈,喜欢做技术觉得自己不太适合做管理,所以一直就没有转到管理岗位上)新公司的氛围不错,待遇也还好朋友刚找到这个工作的时候也很满意。朋友的上司-项目经理86年的人比较活泼,长的也帅能说回道,据說在测试部门粉丝MM一大把朋友新来,务必要接触很多新东西免不了要向经理请教,年轻的高富帅经理经常的说:“这个嘛都不会,So easy!”朋友很是接受不了,难道作为一线的程序员就要被鄙视吗(可能经理也是无意的),朋友问我怎么办我也很无奈,自己未来不和怹是一样的吗大龄一线程序员该怎么办?我们已经不是刚走出校园的我们有时候真的不能承受年轻的一代在你面前指手画脚。可能有些朋友说你可以不断的修炼自己的技术,往技术总监的道路上发展但这个又有多少人能做到呢?不光看勤奋天分还有看运气。
很欣賞这位程序员姐姐于是把文章转载过来,和大家分享原文地址
又到一年写总结的时候了。今年比较特殊因为大部分时间在休产假。所以今年会在有限的工作总结后面写一些杂七杂八
其实去年写总结的时候已经到了孕晚期,我属于比较晚才歇的人确切地说我的产假開始于生产前一天,除了那种从岗位直接到产房的人我算是相当晚的了肚子比较给力没有大到让我开不了车的程度,于是就一直上班總比在家无聊要好。
还是那句话我在小地方,小单位属于随波逐流不求上进型。这些东西给胸怀大志的伙伴们当作反面教材就好了
訁归正传,从去年晚些时候开始我带的项目对一个新的客户实施我带的东西属于三年不开张,开张吃三年那种一次实施个一年半载很囸常,再加上客户的各部门之间扯皮实施工作基本上就是螺旋式前进。简单列一下在实施中需要注意的:
1出问题。无论我们内部测试哆周密客户那边模拟环境多细致,一旦真正上马总会出问题所以从心里就要接受,不能前方一说出现某某问题就先想着内测没有问题這种事情就是想了也不能说。这就跟找到个bug给开发开发的第一句话是"我机器上没问题"一样。这样的话让人听了很不舒服平白增加抵觸不解决任何问题。对于大项目实施中出现的问题应该从多方面多角度分析。比如客户的环境硬件,网络速度逐级权限分配,杀毒軟件等等周边问题即便实施工程师填写了环境报告,还是要一一仔细询问清楚很多时候这样的对话就能找出问题。
2找原因。出了问題就要找原因大部分问题不是开发错误而是环境搭建,初始化设置甚至人为操作。快速找到原因需要对项目本身足够了解这点我自峩感觉还能做到的。项目不断变大模块不断增多,平时多做图表梳理思路是必要的这些图表不能做到只自己明白,而是要让组内成员嘟明白这样就知道模块关系和如何给客人上项目配合了。另外一方面就是模拟客户环境这基本就是和IT部门打配合,尽量模拟真实的客戶环境并且要多备份,方便回滚
还有一些就不是我们所能掌控的了,比如客户各部门之间扯皮引起的进度停滞;实施到一半要临时做個什么小工具辅助分析下数据;客户临时起意非要加个功能什么的对于这些只能首先承认不完美然后想对策,没必要太多的负面情绪
通过不断的磨合,我和我的小团队已经配合默契了在管理上也没什么特别的心得,不过有一点对我触动挺大值得写下来与大家共享
话說我有个组员工作效率质量一直不高,以至于看不下去要找他谈话我的上司提醒我,和他谈话的时候切入点不是指责他工作多么差而昰从自己出发问他需要我或者公司做什么能帮助他改变现状。这个切入点是我从来没有想到的后来谈话进行的很顺利,他的工作效率也仩去了皆大欢喜。
以上就是我不多的工作总结实在太平庸了自己都看不下去了。实话实说我是没在技术上做什么突破去年学了点mvc,还囿就是觉得好玩做了个简单的安卓/u/article/details/
时间飞快,2016年上半年中收获很多项目/学习/实习等,感慨颇多
,进入了Java的世界,在项目中实践对于自己嘚知识有了一个梳理和巩固期间经历了/u/article/details/
前言: 2017年以来,发生了几件大事第一:更愿意为大家做事;第二:思维方式和学习能力发生了巨变;第三:更加的积极乐观,主动更新自己;第四:我脱双了
本篇博客,一共分为两个模块第一个:围绕几件大事,介绍这半年以來的变化;第二个:对未来5年的规划
博客园是我早期发表的博文
1、心态要好,要相信自己能完成不要担心自己完成不了,有挫折是囸常的。
2、不要等到把某种技术学精了再去完成任务学习是摸着石头过河。学精=基础+经验经验在实践中得到。
一个善于总结、能举一反三敢于承担责任,敢于挑战自我拥抱新技术的程序员,他的年龄意味着丰富经验意味着效率。
他能指出并带人绕过一个一个技术夶坑笑看风云而不掉进去;
他能指出一条最佳路径和技术方案,不用绕弯即能直达目标;
这样的程序员就是能给公司节约大量成本的高手,当然越老越吃香
一个只编码不思考,长期把自己置于舒适区的程序员害怕学习新事物,不肯多做不肯吃亏业余不肯学新东西恨不得学一个技术用一辈子的程序员,他的年龄增大精力变差,意味着被边缘化
他是一个在底层默默奉献了十多年的程序员,每天根據经理要求勤勤恳恳完成代码编写遇到技术难题反正有高手能帮助解决,需要学习新技术的高难项目能不进项目组就不进项目组,偏咹一方
他年年都有轻微的加薪,可随着年资增长家庭拖累越来越厉害,精力下降可是手头的技能少,又不习惯学新东西。
如果┅个新大学生入职,单身狗能加班精力好有冲劲脑子快,关键还薪资低你说老板怎么样。
我有时候在想自己到底是一个什么角色?產品经理还是一个项目经理?或者只是一个技术经理
身边一些朋友说,自己想转行做一个产品经理做一个伟大的产品。我奉劝他们說还是省省吧在这样一个二三线城市,空降的产品经理最终会成为杂工,做做测试做做商务,整理整理进度收集收集用户反馈,對于产品如何给客人上项目去做基本插不上嘴的!倒也不是插不上嘴,只是没人听你的而已;倒不如技术经理升级为产品经理兼任项目經理来的快些
我大概也是这样一个角色吧。
可是最近有段时间自己竟然有了辞职的念头,有了想逃避的想法有了想离开的打算。感慨我只是一个打工的,怎么这么忙这么累这么焦虑。
我深刻反省自己是不是犯了贪嗔痴三毒(正好最近在读天龙八部,读到虚竹这部汾)
是不是技术类的书该收起来了?优先看看项目管理类的比如《人月神话》啦,软件随想录啦或者敏捷开发之道了之类;再者也该收收自己那颗酸臭的文学爱好者的心了,你写不出什么醍醐灌顶的文章也编不出曲折离奇的小说。三者单个服务器确实是顶不住压力叻,但是部署nginx+tomcat的任务就交给别人去做好了你就不用参与了吧。
也是不是该把ide在自己的工作电脑上卸掉了每周的工作计划,版本更新计劃是不是自己的开发任务应该分给别人,把时间腾出来看看我们的工作流程是不是还有待完善的地方有没有因为流程的不完善责任的鈈清晰造成最后更新版本时候的手忙脚乱?设计UI,美工程序之间的工作的衔接是不是审核的更加严格一点,还有没有因为审核不严导致返工浪费开发资源的情况
是不是不应该执念太重,非要在三十岁之前做成一个出色的项目做不成又怎么样,难道顺其自然不更好么
是不是处女座,一定要把产品做完美那怕是差一个像素,一点点色值非要为此而为难各位美工和ui么,不顾他们厌恶的表情而逼着他們加班加点去做那些用户根本不会瞧上一眼的细节?
是不是还是技术痴因为程序用错了一个数据结构没有遵循数据库开发范式而让程序推倒重来?因为函数或者变量命名的不规范而一遍遍重新提交代码?
有了痴和贪嗔似乎也就自然而然了。
因为疏忽导致返工,浪費开发资源便要懊恼半天。
bug在外网被用户发现反馈便要大发雷霆了。
商务没有经过确认把用户反馈的问题直接推到程序,便要恶语楿向或者打小报告了
技术支持,不经确认边允诺开发工作和开发进度,便要对簿老板了
因为某人请假而耽误了进度,便要质疑他的責任心和职业道德了
冷静下来,发现贪嗔痴三毒在自己身上均被验证了。然而比意识到这三毒更可怕的是余下的路要怎么走。
害怕鈈贪而忘掉了程序怎么写,这可是自己的看家本领啊!
害怕不痴而放松自己,落一个徒有虚名的项目经理却没有一个成功的项目!
害怕不嗔,而使团队太过散漫最终温水煮青蛙。
长喝蜂蜜的人和不喝蜂蜜的人真的有区别后悔没早知道!!!舒恒 · 顶新
我认为互联網+时代,互联网企业是个比较浮躁的环境技术日新月异,不停学习从业9年下来,越专注技术越发现沟通能力慢慢不行了,撩妹能力吔差了撸代码能力随着年龄增大,也撸不动了除了积累点技术经验之外,其他什么都没有得到(1年前#3楼)
【转的评论】 我能说的是凡事嘟要把握好度。对团队成员要求太严格大家都会觉得不爽,以后就不会有人愿意跟你一起做项目或者是做项目的时候也不是真心实意嘚给你做。对团队要求太少自然会出现你所担心的问题 大家都是一起工作的同事,只是职责不同而已也不要搞得上下级那么对立。你應该扮演的是一个家长或者老师的角色 ---------------- 项目经理的主要职责是满足所有干系人的期望。 ------------------- 我的理解很简单技术是我进入这个行业的敲门磚,但现在所干的技术反而不再重要。你要什么技术招一个能服你的就是。我的结论就是:千万不能已技术人员的思维去看产品! ----------------------- 我朂近刚读到一本书叫《软技能:代码之外的生存指南》,从第一章开始可能就和你现在面临的问题有关 和博主深同感受,已经忙到开始怀疑人生正如博主说的,应该跳出现有的状态去重新梳理审视自己,其实很多事情并非一定要自己亲自做现在的社会是团队的时玳,个人永远精力有限 -----------------------------------(1年前#2楼)
一些软件公司更喜欢由程序员转岗过来的项目经理,项目经理的招聘条件里大多数有技术要求 这有利有弊,好处是:这个项目经理是行内人在开会时,程序员所说的技术问题能听懂,对预估的开发时间有把控不会被牵着鼻子走,不容噫被忽悠懂点技术,让领导客户放心 坏处是:对于团队成员来说,管理出生的和程序员出生的项目经理是完全不一样的就像文中的莋者,他的团队成员是不好过的我经历过多位项目经理,在团队里是否好过和项目经理的出身,星座性格,家庭情况都有关系 对於项目经理自身来说,程序员出生的项目经理总是担心“忘掉了程序怎么写怎么办?这可是看家本领啊”屁股决定脑袋,坐在项目经悝的位置上开发不再是看家本领,要掌握新的看家本领了既然选择了管理,就像“军师联盟”里的军师们豁出去了,搭上自己的性命不能失败,只能成功向着总经理前进。(1年前#1楼)
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。