敬佩有梦想的人,我更敬佩朝着梦想前进,合理规划自己人生的人。
本人毕业于浙江某大学计算机专业,2009年出入职场。怀着对计算机行业的无比热爱,从大四实习开始,就一直不断找相关工作岗位。
第一份工作是以管培生身份进入浙江某合资企业,负责企业内部信息化工作。前面两个月一直在各个部门之间轮岗,了解各个部门之间的工作职责和流程,试用期后是返回自己部门,担任管理岗位。
可以说,这样的工作是非常轻松的。而且,由于是合资企业,虽然试用期工资不高,但福利待遇还不错,上下班厂车接送,当时的房租也比较便宜。但这个时候,我内心其实是矛盾的。
最终,又挣扎了半个月后,我毅然选择了兴趣更大的编程工作。
一句话总结下第一份工作:
管理岗,工资一般,福利较好,工作轻松,但不符合自己的职业规划。
第二份工作是江苏省某台企。对的,你没看错,为了理想,为了自己感兴趣的工作,我选择背井离乡,从浙江去了邻省。这一次,同样负责企业内部信息化工作,不同的是,这次不是管培生,而是程序猿。
由于08年金融危机,所以作为09年毕业的我们,当时找工作特别难,工资待遇也不行。特别是台企,大家懂的,作为应届生,拿着3千不到的工资,只身一人来到陌生城市,开始了我的漂泊之旅。
虽然工资不高,待遇一般,但台企的工作流程还是非常规范的,而且还有前辈带着。作为刚刚踏入职场的我,在前面2年就像一块海绵被扔进水里,每天不知疲惫的吸收着新知识。这个时候,不得不说,兴趣是最大的老师,如果不是兴趣使然,我也不会那么努力写代码。
台企对应届生来说,起步低,规范化,知识又足够多,个人建议在里面待2~3年是个比较合理的时长,超过3年以上,就没必要了,因为凡是有利有弊。弊的是,知识体系保守,用的都是几年前的成熟技术,很少有机会让你接触行业最新技能。所以,在里面3年不到的时候,我选择了离开。
虽然离开了,但2年多来,让我从一个对编程没有任何项目实战经验的新人,学到了很多开发和项目类技能,如:ASP、JavaScrip、VBScript、VB.NET、.NET Framework 1.1 2.0+、ASP.NET WebForm、jQuery、jQuery UI、MS SQL Server、MySql、Oracle、VSS,以及项目管理和CMMI5涉及到的相关软件文档等。
一句话总结下第二份工作:
底层程序猿,跨省漂泊,工资低,福利少,比较累但很充实,凭借兴趣打下扎实基础。
第三份工作跳槽到某民营企业,依旧是企业内部信息化,兼网游后台系统。之所以要跳槽,一方面需要紧跟行业风向标,学习并实际运用最新技能,不断提升自己;另一方面,也是为了在这个陌生城市扎根下去,需要更多的收入。
收入翻倍的同时,工作量也成几倍的翻。当时最夸张的时候是某个月在公司连续996一个月(当然,现在回顾,一个月996实在是小case),由于住的地方离公司比较远,老大跟我住的又近,所以当时老大也经常跟我一起加班,晚上没公交的时候会送我回去。
当时那个项目,我不止一次跟老大说,我能不能放弃,能不能换个人来做,我一个人实在搞不定。每次老大就只回我一句话:我相信你可以的,再试试。
为了不辜负老大的信任,也为了证明自己对编程的无限热爱,咬着牙,经过无数次失败,无数个不眠之夜,无数次google(因为公司内没有同事会这个新技术,所以只能寻求谷歌),最后终于成功了。这是9年多职场生涯一路走来,难得记忆犹新的项目之一。成功的那一刻,成就感爆棚!
在这家公司虽然只待了一年多,但我觉得过了3年,学到了更多开发技能,如:jQuery Mobile、.NET Framework 4.0+、ASP.NET MVC、WPF、WCF、WebService、CSS3、HTML5、SVN等。
一句话总结第三份工作:
中级程序猿,工资翻倍,买了房,累但很充实,老大的信任让我对编程更加狂热。
第四份工作跳槽到某创业企业,这次不再是企业内部信息化,而是做电商。这次跳槽,主要是觉得应该开始尝试下团队管理岗位,以及抵挡不住的股权诱惑。毕竟是创业公司,开发人员不多,流程也比较混乱。
这时候之前的台企规范化工作流程,在现阶段的团队管理上面,就有了很多借鉴之处。自己除了管理团队,同时也是电商后台系统的核心开发与架构师。
可惜好景不长,半年左右的时间,公司因为扩张过快、经营不善等原因宣布倒闭。虽然,只有仅仅半年时间,但对技术的追逐一点也没拉下,如:ASP.NET Web api、RESTful api、并发、多线程、压力测试、GIT等。另外,初次尝试团队管理,也是略有收获。
一句话总结第四份工作:
资深程序猿,工资翻倍,股权激励,团队管理,满怀创业热情但遭遇失败。
第五份工作是目前的工作,也是在职时间最长的工作(已经超过4年)。这是一家互联网在线旅游公司,在里面负责企业内部信息化,没错,我又重操旧业了。
为什么要重操旧业呢?
原因很简单,因为受不了频繁换部门,频繁做新人。刚进公司的时候,也是从小程序猿做起(没错,是不是有点埋没人才,哈哈),可是互联网公司战略变化太快了,入职3个月内,经历了多次部门拆分与重组,前前后后换了3个研发部门。
这时候,我告诉自己,一定要想办法改变处境,如果再这样下去,迟早会被淹没,永无出人头地之日。说来也巧,这个时候,公司内部的信息化部门负责人离职了,然后公司面向全员发起了负责人竞聘通知。
我心想:机会啊,于其碌碌无为,不如去挑战一下。当时,一起竞聘的还有一位,工龄比我大一倍,技术也不错,不过非常幸运,最终CTO和我后来的老大都把票投给了我。
在企业内部信息化这个熟悉又陌生的新岗位上,这一干,就是4年多。
这4年来,管理的下属多了、系统多了、工种多了,自己的职责也不再是写好每一行代码,所以也逼迫自己逐渐从一名程序猿转型至产品总监。新学了很多开发以外的知识,如:用研、原型、PRD、交互、设计、PMP、敏捷等。
我对部门内同事们说的最多的一句话,也是我给他们唯一承诺的一句话是:你们跟着我拼命干出成绩,我拼命给你们涨工资。
一句话总结目前工作:
从程序猿产品总监,转型还算成功,并准备长期投身产品经理事业。
写在最后:
其实每一年,我都有给自己树立一个年度目标,然后朝着这个目标不断奔跑,不管成功与否,过程都能收获不少。虽然现在已经是属于中高级管理人员,但人还是要永远有更高梦想的,万一一个个都实现了呢。
你猜我的下一个梦想是什么?!
本文由 @ Thinking 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自Unsplash,基于CC0协议
1、手写jsonp的实现
参考自: http://www.qdfuns.com/notes/16738/1b6ad6125747d28592a53a960b44c6f4.html
先说说JSONP是怎么产生的:
其实网上关于JSONP的讲解有很多,但却千篇一律,而且云里雾里,对于很多刚接触的人来讲理解起来有些困难,着用自己的方式来阐释一下这个问题,看看是否有帮助。
1、一个众所周知的问题,Ajax直接请求普通文件存在跨域无权限访问的问题,甭管你是静态页面、动态网页、web服务、WCF,只要是跨域请求,一律不准。
2、不过我们又发现,Web页面上调用js文件时则不受是否跨域的影响(不仅如此,我们还发现凡是拥有"src"这个属性的标签都拥有跨域的能力,比如script、img、iframe)。
3、于是可以判断,当前阶段如果想通过纯web端(ActiveX控件、服务端代理、属于未来的HTML5之Websocket等方式不算)跨域访问数据就只有一种可能,那就是在远程服务器上设法把数据装进js格式的文件里,供客户端调用和进一步处理。
4、恰巧我们已经知道有一种叫做JSON的纯字符数据格式可以简洁的描述复杂数据,更妙的是JSON还被js原生支持,所以在客户端几乎可以随心所欲的处理这种格式的数据。
5、这样子解决方案就呼之欲出了,web客户端通过与调用脚本一模一样的方式,来调用跨域服务器上动态生成的js格式文件(一般以JSON为后缀),显而易见,服务器之所以要动态生成JSON文件,目的就在于把客户端需要的数据装入进去。
6、客户端在对JSON文件调用成功之后,也就获得了自己所需的数据,剩下的就是按照自己需求进行处理和展现了,这种获取远程数据的方式看起来非常像AJAX,但其实并不一样。
7、为了便于客户端使用数据,逐渐形成了一种非正式传输协议,人们把它称作JSONP,该协议的一个要点就是允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。
JSONP的客户端具体实现:
1、我们知道,哪怕跨域js文件中的代码(当然指符合web脚本安全策略的),web页面也是可以无条件执行的。
远程服务器remoteserver.com根目录下有个remote.js文件代码如下:
54、实现一个布局:左边固定宽度为200,右边自适应,而且滚动条要自动选择只出现最高的那个
55、画出盒子模型,要使谷歌浏览器的盒子模型显示得跟IE浏览器一致(让谷歌跟ie一致,不是ie跟谷歌一致),该怎么做?
56、手写JS实现类继承,讲原型链原理,并解释new一个对象的过程都发生了什么
57、Array对象自带的方法,一一列举
58、若干个数字,怎么选出最大的五个
59、Array对象自带的排序函数底层是怎么实现的?
60、常用的排序算法有哪些,介绍一下选择排序
61、了解navigator对象吗?
62、手写一个正则表达式,验证邮箱
63、link和@import引入CSS的区别?
64、刚才说有些浏览器不兼容@import,具体指哪些浏览器?
65、介绍一下cookie,localstorage,sessionstorage,session
66、jquery绑定click的方法有几种
67、你的优点/竞争力
68、移动端适配问题
69、react的难点在哪里
70、做过css动画吗
71、如何优化网站
72、以后的规划
73、你做过最困难的事情是啥?
74、css3 html5新特性
75、闭包,ES6,跨域
76、问做过啥项目,用到什么技术,遇到什么困难
77、兼容性
78、盒子模型
79、Array的unshift() method的作用是什么?如何连接两个Array?如何在Array里移除一个元素?
80、用纸笔写一个Closure,任意形式和内容
81、知不知道Array-like Object?
82、如何用Native JavaScript来读写Cookie?
83、知不知道CSS Box-model?
84、如何做一个AJAX Request?
85、Cross-domain access有没有了解?
86、前端安全方面有没有了解?XSS和CSRF如何攻防?
87、HTTP Response的Header里面都有些啥?
88、知不知道HTTP2?
89、输入URL后发生了什么?
90、new operator实际上做了什么?
91、面向对象的属性有哪些?
92、做一个两栏布局,左边fixed width,右边responsive,用纸笔手写
93、讲一下AJAX Request
94、讲一下Cross-domain access
95、介绍一下做过的项目
96、问到了多个服务器怎么弄,架构之类的
97、angular的渲染流程
98、脏检查
99、nodejs的架构、优缺点、回调
100、css 盒模型
101、css 布局,左边定宽右边自适应
102、冒泡和捕获,事件流哪三个阶段?
103、实现事件代理
104、原型链
105、继承的两种方法
106、ajax,原生ajax的四个过程
107、闭包,简单说一个闭包的应用,然后闭包的主要作用是什么
108、css:两个块状元素上下的margin-top和margin-bottom会重叠。啥原因?怎么解决?
109、js:写一个递归。就是每隔5秒调用一个自身,一共100次
110、cookie和session有什么区别
111、网络分层结构
112、你的不足是什么?
113、做了那么多项目,有没有自己的归纳总结
114、工程怎么进行文件管理
115、less和sass掌握程度
116、Cookie 是否会被覆盖,localStorage是否会被覆盖
117、事件代理js实现
118、Css实现动画效果
119、Animation还有哪些其他属性
120、Css实现三列布局
121、Css实现保持长宽比1:1
122、Css实现两个自适应等宽元素中间空10个像素
123、requireJS的原理是什么
124、如何保持登录状态
125、浮动的原理以及如何清除浮动
126、Html的语义化
127、原生js添加class怎么添加,如果本身已经有class了,会不会覆盖,怎么保留?
128、Jsonp的原理。怎么去读取一个script里面的数据?
129、如果页面初始载入的时候把ajax请求返回的数据存在localStorage里面,然后每次调用的时候去localStorage里面取数,是否可行。
130、304是什么意思?有没有方法不请求不经过服务器直接使用缓存
131、http请求头有哪些字段
132、数组去除一个函数。用arr.splice。又问splice返回了什么?应该返回的是去除的元素。
133、js异步的方法(promise,generator,async)
134、Cookie跨域请求能不能带上
135、最近看什么开源项目?
136、commonJS和AMD
137、平时是怎么学习的?
138、为什么要用translate3d?
139、对象中key-value的value怎么再放一个对象?
140、Get和post的区别?
145、Post一个file的时候file放在哪的?
146、说说你对组件的理解
147、组件的html怎么进行管理
148、js的异步加载,promise的三种状态,ES7中的async用过么
149、静态属性怎么继承
150、js原型链的继承
151、jquery和zepto有什么区别
152、angular的双向绑定原理
153、angular和react的认识
154、MVVM是什么
155、移动端是指手机浏览器,还是native,还是hybrid
156、你用了移动端的什么库类和框架?
157、移动端要注意哪些?
158、适配有去考虑么,retina屏幕啊?
159、rem是什么?em是什么?如果上一层就是根root了,em和rem等价么?
160、怎么测试的?会自动化测试么?
161、你觉得你什么技术最擅长?
162、你平时有没有什么技术的沉淀?
163、单向链表怎么查找有没有环?
164、怎么得到一个页面的a标签?
165、怎么在页面里放置一个很简单的图标,不能用img和background-img?
166、正则表达式判断url
167、怎么去除字符串前后的空格
168、实现页面的局部刷新
169、绝对定位与相对定位的区别
170、js轮播实现思路
171、使用js画一个抛物线,抛物线上有个小球随着抛物线运动,有两个按钮能使小球继续运动停止运动
172、java五子棋,说下实现思路
173、如何让各种情况下的div居中(绝对定位的div,垂直居中,水平居中)?
174、display有哪些值?说明他们的作用
175、css定义的权重
176、requirejs实现原理
177、requirejs怎么防止重复加载
178、ES6里头的箭头函数的this对象与其他的有啥区别
179、tcp/udp区别
180、tcp三次握手过程
181、xss与csrf的原理与怎么防范
182、mysql与 MongoDB的区别
183、w3c事件与IE事件的区别
184、有没有上传过些什么npm模块
185、IE与W3C怎么阻止事件的冒泡
186、gulp底层实现原理
187、webpack底层实现原理
188、gulp与webpack区别
189、vuejs与angularjs的区别
190、vuex是用来做什么的
191、说下你知道的响应状态码
192、ajax的过程以及 readyState几个状态的含义
193、你除了前端之外还会些什么?
194、cookie与session的区别
195、一些关于php与java的问题
196、你觉得你哪个项目是你做的最好的
197、说说你在项目中遇到了哪些困难,是怎么解决的
198、前端优化你知道哪些
199、webpack是用来干嘛的
200、webpack与gulp的区别
201、es6与es7了解多少
202、说下你知道的响应状态码
203、看过哪些框架的源码
204、遇到过哪些浏览器兼容性问题
205、清除浮动有哪几种方式,分别说说
206、你知道有哪些跨域方式,分别说说
207、JavaScript有哪几种类型的值
208、使用 new操作符时具体是干了些什么
209、学习前端的方法以及途径
210、怎么实现两个大整数的相乘,说下思路
211、你学过数据结构没,说说你都了解些什么
212、你学过计算机操作系统没,说说你都了解些什么
213、你学过计算机组成原理没,说说你都了解些什么
214、你学过算法没,说说你都了解些什么
215、说下选择排序,冒泡排序的实现思路
216、用过哪些框架
217、让你设计一个前端css框架你怎么做
218、了解哪些设计模式说说看
219、说下你所了解的设计模式的优点
220、vue源码结构
221、状态码
222、浏览器缓存的区别
223、304与200读取缓存的区别
224、http请求头有哪些,说说看你了解哪些
225、js中this的作用
226、js中上下文是什么
227、js有哪些函数能改变上下文
228、你所了解的跨域的方法都说说看你了解的?
229、要是让你自己写一个js框架你会用到哪些设计模式
230、平常在项目中用到过哪些设计模式,说说看
231、一来给了张纸要求写js自定义事件
232、前端跨域的方法
233、call与apply的区别
234、h5有个api能定位你知道是哪个吗?
235、vue与angularjs中双向数据绑定是怎样实现的?
236、webpack怎样配置?
237、nodejs中的文件怎么读写?
238、link和@import有什么区别?
239、cookies,sessionStorage 和 localStorage 的区别
240、看过哪些前端的书?平时是怎么学习的
241、说下你所理解的mvc与mvvc
242、position有哪些值,说下各自的作用
243、写个从几个li中取下标的闭包代码
244、你的职业规划是怎么样的?
245、移动端性能优化
246、lazyload如何实现
247、点透问题
248、前端安全
249、原生js模板引擎
250、repaint和reflow区别
251、requirejs如何避免循环依赖?
252、实现布局:左边一张图片,右边一段文字(不是环绕)
253、window.onload和$(document).ready()的区别,浏览器加载转圈结束时哪个时间点?
254、form表单当前页面无刷新提交 target iframe
255、setTimeout和setInterval区别,如何互相实现?
256、如何避免多重回调—promise,promise简单描述一下,如何在外部进行resolve()
257、margin坍塌?水平方向会不会坍塌?
258、伪类和伪元素区别
259、vue如何实现父子组件通信,以及非父子组件通信
260、数组去重
261、使用flex布局实现三等分,左右两个元素分别贴到左边和右边,垂直居中
262、平时如何学前端的,看了哪些书,关注了哪些公众号
263、实现bind函数
264、数组和链表区别,分别适合什么数据结构
265、对mvc的理解
266、描述一个印象最深的项目,在其中担任的角色,解决什么问题
267、http状态码。。。401和403区别?
268、描述下二分查找
269、为什么选择前端,如何学习的,看了哪些书,《js高级程序设计》和《你不知道的js》有什么区别,看书,看博客,看公众号三者的时间是如何分配的?
270、如何评价BAT?
271、描述下在实习中做过的一个项目,解决了什么问题,在其中担任了什么角色?这个过程存在什么问题,有什么值得改进的地方?
272、如何看待加班,如果有个项目需要连续一个月加班,你怎么看?
273、遇到的压力最大的一件事是什么?如何解决的?
274、平时有什么爱好
275、自身有待改进的地方
276、n长的数组放入n+1个数,不能重复,找出那个缺失的数
277、手里有什么offer
278、你对于第一份工作最看重的三个方面是什么?
279、如何评价现在的前端?
280、用原生js实现复选框选择以及全选非全选功能
281、用4个颜色给一个六面体上色有多少种情况
282、amd和cmd区别
283、为什么选择前端,移动端性能优化
284、vue的特点?双向数据绑定是如何实现的
285、Object.defineProperty
286、算法题:数组去重,去除重复两次以上的元素,代码题:嵌套的ul-li结构,根据input中输入的内容,去除相应的li节点,且如果某个嵌套的ul下面的li都被移除,则该ul的父li节点也要被移除
287、页面加载过程
288、浏览器如何实现图片缓存
以上资料已经好了需要的小伙伴下方卡片获取!
是编程乐趣,一个10年.Net开发经验老程序员,点击右上方“关注”,每天为你分享开源项目和编程知识。
一直以来,.Net由于微软产品的战略的错误,导致抛弃了很多技术,今天就一起来盘点8个曾经流行的技术,看看你都用过几个。
01
.NET Framework
首当其冲,肯定是.NET Framework,现在已经慢慢被.Net Core取代,.Net Core是一个跨平台的现代化开源平台,也成为企业开发跨平台应用程序的首先。
02
WCF
WCF,全称是Windows Communication Foundation,Windows通讯开发平台,现在已经被Web API、gRPC取代。特别是gRPC是一个高性能、开源和通用的RPC框架,被广泛用于微服务架构和云原生应用中,逐渐取代了WCF。
03
VB6
VB6是微软公司开发的编程设计软件,基于Windows操作系统可视化编程环境,现在被Visual Basic .NET取代了,虽然Visual Basic .NET还保持更新,但是用的人也越来越少了,市场份额持续在降低。
Visual Basic .NET其实也被取代了,现在说.Net默认就是等于C#。
04
Windows Forms
可能是微软想抛弃的一个技术,但是唯一没成功的例子吧。WPF的推出一度大有替换Windows Forms的态势,但是没成功。WPF非常适合开发一些界面要求比较高、现代化的产品,这两者依然保持迭代更新。
05
ASP.NET Web Forms
ASP.NET Web Forms被ASP.NET Core MVC取代。ASP.NET Core MVC是一个现代化、开源的Web应用程序框架,具有更好的性能和可扩展性,逐渐取代了ASP.NET Web Forms。
06
Silverlight
Silverlight曾经一度非常流行,那个时候还是Flash的时代,但现在都被Html5取代了。Silverlight是一个用于开发跨平台多媒体应用程序的插件,但随着HTML5的普及和浏览器支持的增加,Silverlight逐渐被取代。
07
Microsoft Office Access
Microsoft Office Access是由微软发布的关系数据库管理系统,对于微软的数据库,很多人都知道MsSql,但Microsoft Office Access很多人没接触过,那个时候还是Asp的时代,Asp+Access一度是很多个人站点的首先,但现在使用量确实很少了。
08
Xamarin
Xamarin用于使用 .NET 和 C# 构建 Android 和 iOS 应用的应用平台。虽然MAUI刚刚推出,但毋庸置疑的Xamarin肯定会被替代。
MAUI是一个跨平台框架,支持单个共享代码库开发在 Android、iOS、macOS 和 Windows 上运行的应用。
我是编程乐趣,一个10年.Net开发经验老程序员,专注开源项目和编程知识分享。
私信回复:【888】,领取.Net视频教程。
- End -
推荐阅读
推荐一个C#开发的、跨平台的解压缩的开源项,值得收藏
一个方便IO单元测试的C#扩展库
推荐一个C#开发的窗口扩展菜单,支持系统所有窗口
一个Windows远程工具,小巧但实用,支持RDP、SSH、SFTP、FTP等多种协议
一个对C#程序混淆加密,小巧但够用的小工具
*请认真填写需求信息,我们会在24小时内与您取得联系。