软件开发工程师_嵌入式软件开发工程师和it应用软件工程师的区别 - CSDN
精华内容
参与话题
  • 给想从事软件开发的在校学生和刚刚参加工作的新手的一些建议

            当前,全球软件行业正处于成长期向成熟期转变,而在国内,受益于经济转型和产业升级,中央提出的”互联网+“战略,也被积极应用到产业升级当中,大数据、人工智能、云计算和区块链等技术更是展现出强大的发展潜力,给软件行业的未来带来了无限可能。大量新兴技术的出现以及行业人才的紧缺,软件开发人员的工资也是水涨船高,软件工程师成为如今炙手可热的职业。


            看过以前文章的朋友应该知道,我生活在一个号称二线但怎么看怎么像三线的城市,有一盆冷水我该浇还是要浇的,那就是二三线城市的软件开发人员,可能并没有上图中看着那么有科技感,很有可能是下面这样子的。

            如果你看了这个还想从事软件行业,那我只能说一句,少年,你果然是骨骼精奇,是万中无一的编程奇才,既然这样,我就把我个人的一些经验与大家分享一下。可能有的朋友会说,你既不是技术大牛,也不是语言专家,有什么成功经验好分享啊,那我不得不说朋友你错了,我可以分享失败的教训啊,这可是实打实的啊。

            1. 不知道看文章的你大学的专业为什么选择了计算机,如果是真的热爱,那么恭喜你,如果不是,我想提前告诉你,其实搞技术是很枯燥的,要有个思想准备了,”路漫漫其修远兮,吾将上下而求索“。

            2. 在当下的大学学习氛围中,”大学学的东西都没用“的言论甚嚣尘上,然而真的没用吗?虽然说与实际应用确实存在一定的脱节,但是要说都没用,那就是大错特错了!!!

            首先,计算机科学是从数学分离出来的一个学科,也是用来解决实际问题的,各种算法,都需要很强的数学功底作为基础,无论是数据结构还是各种算法(大数据中也会用到)。都离不开强大的数学理论,高等数学、离散数学和线性代数绝不能扔;

            其次,就是英语。不用说别的,就拿开发语言来说,使用的都是英文,很多优秀的技术问答论坛和先进技术书籍也都是使用英文居多,这就需要我们有比较强的英语功力做支撑,才能快速地解决问题!而且在妹子面前秀一下英语,会得到妹子更多的青睐呦!

            最后,软件开发过程中难免会碰到各种各样问题,涉及到进程自然少不了操作系统,谈到通讯也少不了计算机网络,应用到底层更是少不了组成原理,这些都会碰到,根据我的切身经验,有很多错误就是出在基础的认知上,而这种错误往往又是最难发现的,与其在工作中恶补,不如赢在起跑线上。

            3. 对于刚刚工作的developer,我只有几点小小的建议。

            第一个是要确立目标。自己将来到底想走到什么的一个位置,架构师or项目经理or创业or……然后遵循着自己的目标努力就是了。

            第二个是做好总结。尽早搭建自己的技术体系框架,在这个框架下多多积累,这会是你日后职业道路上最宝贵的一笔财富。

            第三个是沟通和协调能力,无论是从事技术还是管理,都应该具备基本的沟通和协调能力,良好的沟通会使工作更加顺畅,有效的协调会使工作更加高效。

            最后,既然毕业了,就意味着你要开始直面生活了,相信我,培养良好的

    理财习惯将会受益终生。

            以上是鄙人的一点经验分享,朋友们有什么好的建议可以给我留言,咱们一起交流,共同进步!


    想查看更多的内容或参与讨论,请关注小道的微信公众号,期待您的关注和指点!


    展开全文
  • C/C++软件开发工程师

    千次阅读 2019-02-23 21:30:38
    1.技术面试 1.1程序设计基础C/C++  1.2操作系统 线程、进程、内存管理、用户编程接口 1.3计算机网络 ...SQL功能、内连接与外链接、事务、存储过程与函数、数据库范式、触发器、游标、数据库日志、视图、union与...

     

    1.技术面试

    1.1程序设计基础C/C++ 

    1.2操作系统

    线程、进程、内存管理、用户编程接口

    1.3计算机网络

    1.4数据结构与算法

    1.5数据库

    SQL功能、内连接与外链接、事务、存储过程与函数、数据库范式、触发器、游标、数据库日志、视图、union与union all、数据库分类、死锁等

    1.6海量数据处理

    展开全文
  • 十道腾讯软件开发工程师面试题

    千次阅读 2016-06-17 18:36:20
    本来在一加软件公司工作,三月初的时候无意中收到深圳腾讯云的电话(对方表明身份后,说看到我的简历,想和我聊聊。当时没有电面经验再加上也没有进来也没有投简历,爽快的答应聊就聊呗。

      本来在一加软件公司工作,三月初的时候无意中收到深圳腾讯云的电话(对方表明身份后,说看到我的简历,想和我聊聊。当时没有电面经验再加上也没有进来也没有投简历,爽快的答应聊就聊呗。上来就是技术问题,当时蒙了,我简历也不知道啥时候怎么他就知道啦,当时电面后想着估计黄啦),后面就没音讯啦,从那次以后开始踏上2016找实习的征途。之后再内推腾讯互动娱乐,没收收到电面。所以按照正常的实习生流程走下来。经过笔试,一个礼拜后于4月9号夜收到腾讯一面通知(4月10号),今天特意分享一下《十道腾讯软件开发工程师面试题》希望大家能够受用。

      1、介绍一下你自己。(严格来说这个不能算一个问题,每家公司基本都要问)

      一、OSI模型有几层?

      二、说说C++的多态?为什么使用虚函数比非虚函数耗费的时间更多?

      三、有一个全局变量int a=0,现在两个线程各自循环执行100次a++操作,问最后a的值是多少?

      四、对于海量数据,用什么数据结构存储用户搜索的高频关键词比较合适?比如,当用户输入“黄”字,输入框要自动显 示“黄晓明”,“黄蓉”,“黄山”,“黄鹤楼”等提示,但是能存储的量很有限,所以需要选择恰当的数据结构。(我先后说 了数组和堆,似乎都被否决了)

      五、智力题:一片草地的草每天匀速地长,m只羊花p天能吃完,n只羊花q天能吃完,问现在k只羊花多少天能吃完?( 记不清m,p,n,q,k的具体数值了,总之是根据已有的两个条件列出二元一次方程组来求解)

      六、手写快速排序程序。快排的复杂度是多少?给定1组数1,4,5,5,8,9,7,在快排过程中这两个5是否会被交换?

      七、简述怎样用两个栈实现一个队列的功能?只需实现入队、出队。

      八、你想打开电视看世界杯,结果发现电视黑屏完全没反应,应该怎么检测故障?

      二面的两个问题我是这么解答的:

      九、写一个函数判断一个字符串里的小括号、大括号是否匹配。例如,输入为"(){}"时输出为true,输入为“{(aa)}”时输出为true,输入为“({)}”时输出为false。

      (我用一个栈来存储,对字符串从左往右扫描,遇到左括号就压进栈里,遇到右括号就判断是否跟栈顶元素匹配,如果不匹配就让整个函数直接返回false,如果匹配就取出栈顶元素。注意右括号始终不会进栈。扫描完后如果栈不为空就说明还有多余的左括号,返回false;否则返回true。)

      十、如果AB*C=DE,DE+FG=HI,其中从A到I这9个字母代表9个不同的数字,求这9个数字分别是多少。

      (我写了5重循环,A,B,C分别从0到9循环,用一个布尔数组记录每个数字是否使用过,筛掉有重复数字的情况,然后可以直接根据AB*C=DE求出D,E,再筛掉有重复数字的情况,然后这个内层循环里再让F,G分别从0到9循环,可直接得出H,I,检查是否符合。最后面试官跟我说第2题他本来想让我用数学方法求解的,没想到我直接就写了代码了,他嫌麻烦了。)

      最后问了一下个人的学习和生活情况。这位面试官搞并行处理,我到房间的时候他正在给另一个同学面试,他就拿来两张纸让我站在门口写代码,相当于把每人半小时的面试时间压缩了一半……

      最后给大家再支个招:

      可以去www.proginn.com里面搜索腾讯在职或者曾经在职的师兄,只需要简单的预约他们一个小时电话,然后就开始唠嗑吧,这样你入职的概率会大很多哦。

    展开全文
  • 其实,软件开发人员的工作职责远远超过单纯的计算机编程。 在参与软件开发的整个生命周期中需要开发人员担当多个角色,努力通过研究和替代技术等解决问题的方法来实现产品研发目标,从而改进整个产品。 要想成为软件...
      
    其实,软件开发人员的工作职责远远超过单纯的计算机编程。  
    在参与软件开发的整个生命周期中需要开发人员担当多个角色,努力通过研究和替代技术等解决问题的方法来实现产品研发目标,从而改进整个产品。  
    要想成为软件开发的专家,需要我们完整了解软件开发的流程,并在关键部分掌握丰富经验。  
    需要我们了解设计模式和算法的细微差别,同时遵循软件开发的最佳实践,包括创造性和思考力,为编程问题提供合适的解决方案。  
    实现这一目标需要掌握服务器端开发、客户端开发、DevOps运维、云计算、网页设计、分布式系统、数据库、编程规约、代码管理、基础设施管理、可扩展性、安全性待方面的能力。  
    你可能未必全部掌握以上内容。但是可以尝试从表层了解绝大部分内容,然后再深入掌握其中几个技术。  
    以下给各位列出开发者缺乏的几个主要技术能力,而技术管理者或架构师在招聘这些职位时应该熟悉检查这些要素。  
    编码规范  
    编码规范有助于确保良好的开发实践和产品开发。要了解一些最重要的编码规约:  
    DRY(不要重复自己),SOLID,TDD,防御性编程  
    设计模式  
    设计模式在软件开发中是一种常见的,可重复使用的解决方案,可解决软件中的常见问题。软件开发者要了解一些常见的DesignPartern是非常重要的,还有更重要的是要能够识别给定问题的正确设计模式。如MVC、Singleton、DAO、Facade、Proxy、Adapter、Strategy和AbsractFactory等一些一流开发者使用的设计模式。  
    服务器端开发  
    在较复杂的软件系统中,后端会有各种各样的逻辑。作为后端开发人员,处理应该程序的业务逻辑就要面临很多挑战。任何开发人员都能够编写代码,但是只有有经验的开发人员才可以写出具有高性能、可伸缩性和可靠性都好的高质量代码。开发优秀软件的过程涉及的领域包括大量科学、数学、计算机等专业知识,有处理的思维和经验非常重要。  
    高速缓存  
    数据缓存的各种机制(文件、数据库、内存、反向代理、HTTP....)  
    内存管理  
    Java有一个非常好的垃圾收集器,能够自动管理内存,清理未使用的对象并释放一些内存。但是一个资深的Java开发者需要对内存的工作原因有一个非常透的理解,这样才能写出高性能和优化的应用程序。  
    了解以下概念至关重要:  
    堆栈,堆,强引用,弱引用,转义引用,如何引用字符串,垃圾收集过程,meta空间,垃圾收集器类型。  
    异常处理  
    这是一个相当重要,也是一个比较大的话题,我们后续会再写关于它的专门文章。现在,列出一些处理异常的一些良好实践:  
    1、遵循“错误优先”原则使软件更可靠  
    2、不要捕捉无法恢复的异常  
    3、不要记录完异常后,又将异常抛出来  
    4、选择正确的层来处理异常(例如:DAO不知道是数据库的故障如何处理,但是服务层可以知道)  
    5、如果无法从异常中恢复,则优先选择未经检查的异常  
    IO操作  
    了解I/O操作的成本以及可能出现的不可预知的结果。  
    异步编程  
    使用线程实现Java中的异步编程,它也是Java平台的基础部分,有效使用并发对于构建高性能应用程序非常重要。  
    比如线程池、死锁、生产者-消费者、原子性、不可变对象、信号量等等词汇对资深开发人员来说不应该是新东西。  
    批处理  
    在实际场景中,编写批量作业非常普遍。通常执行重要的任务,有一些基本规则:  
    1、每个任务应该按输入、处理过程与输出进行划分;  
    2、始终轮询批量输入数据;  
    3、处理器应该是线程安全;  
    4、产出物应该为原子属性;  
    5、存储工作结果;  
    6、要考虑EIP模式。  
    分布式计算  
    在现代世界中,分布式计算是指使用分布式系统来解决计算问题。然而,分布式系统与传统系统不同,具有非常高的复杂性。当用户开始高速增长资源消耗较大时,有分布式系统工作经验的工程师会在此时发挥作用。微服务软件体系结构是分布式计算以及分布式体系结构所有的优点与折衷的一个很好的例子。  
    而今,微服务是当今软件工程师之必备技能,就需要我们对分布式系统有丰富的经验。  
    比如容错性,可用性与一致性,分布式事务/事件、同步与异步通信,分布式认证,分布式应用,共识应用程序等非常重要。  
    数据库  
    精确掌握与数据库从通信到获取数据中要涉及的所有成本,如连接握手、数据传输等情况。清楚了解原子事务以及如何确保数据一致性。因此,数据库管理是软件开发人员的必备技能。  
    数据库用于管理数据,这是一项艰巨的任务,即使不考虑将业务逻辑添加到数据库中。在大型IT系统中,数据库在安全性,可伸缩性,容量和可用性方面面临着诸多挑战。我们要考虑加密,复制,分片,大数据等问题。了解数据库的工作方式以及如何优化它以及每项处理消耗的成本(例如,占用内存、CPU数)将有助于有效设计系统的数据库管理。  
    DevOps  
    主力开发工程师要有能推动DevOps的文化理念和实践的能力,在所有运维步骤中做到自动化,提高高质量和高速度交付应用程序与服务能力。代码部署或配置基础设施必须为自动化,且要灵活以及受到监控。  
    一个强大的开发者应该很好地了解从测试,发布到部署和基础架构管理的全开发生命周期。需要我们了解云计算,Linux,网络,容器,工程管理等。  
    代码管理  
    鉴于代码的重要性,只有主力开发人员才能够掌握代码生命周期,并力促软件工程最佳实践。为此,需要你熟谙源代码管理系统,比如Git,对分支策略,版本控制,分布式修订控制,另外还有代码质量保证工具,代码间的通信和依赖管理,配置管理等有清晰的思维。  
    安全  
    Web安全是件很难处理的事情,一部分取决于许多外部参数;软件工程师需要遵循构建安全Web应用程序的最佳实践与准则。  
    主力工程师需要对信息安全有较深的理解,不仅要如何避免构建不安全与容易受攻击的系统,还需要知道保护用户的隐私。  
    一个伟大的开发人员需要能够创建一个指南来处理前10个Web应用程序安全风险。在Web应用程序中,我们有更多需要工程师关注安全威胁,其中包括如下:  
    1、上传文件检查;  
    2、密码暴力破解;  
    3、会话到期处理;  
    4、会话来源验证;  
    5、通过网络安全通信;  
    6、安全的Cookie访问;  
    7、用户凭证处理。  
    前端开发  
    前端开发是软件开发重要的一部分,如果您不知道程序设计与良好用户体验的关系,则不能成为主力软件工程师。  
    在前端世界中,JavasScript和CSS是软件工程师必备的。在这两方面掌握掌握并不容易,但了解它们的工作方式以及两者如何与HTML连接一起,使我们能够提供出色的用户体验非常重要。  
    若要领导一个前端团队,你需要知道的不仅仅是如何建立一个漂亮布局,要想前端开发做得更好,你需要了解如下:  
    1、浏览器作为引擎可以构建什么?  
    2、如何开发响应式网站;  
    3、如何提高网站的性能;  
    4、如何开发单页面应用程序;  
    5、如何建设现代高效的发展环境;  
    6、熟悉HTML5API。  
    7、熟悉React.js或Vue.js框架  
    Web开发是一个巨大的技术领域,为了掌握这些技能,开发人员需能够自我激励,主动学习新技术,并在职业生涯中给自己扣上很多帽子。继而不断挑战自我,然后更好地解决问题,这就是编程的本质。知识很重要,在某些复杂问题的情况下更是如此。在变化如此之快的IT技术领域中,知识的获取在任何时候比我们已会的技能更为重要。
    展开全文
  • 技术族分为软件研发、美术、质量管理、设计、技术支持五个职业发展通道,每个发展通道包含下列职位(具体内容请见表4-技术族发展通道职位列表)。 表4-技术族发展通道职位列表 技术族(TE) 软件...
  • 分享一位软件工程师的多年总结,经验之谈,借此导航自己人生。 1、分享第一条经验:“学历代表过去、能力代表现在、学习力代表未来。” 其实这是一个来自国外教育领域的一个研究结果。相信工作过几年...
  • Java软件开发工程师笔试题 答案

    千次阅读 2019-01-22 18:19:23
    Java软件开发工程师笔试题 答案
  • Java软件开发工程师级别

    千次阅读 2018-04-12 23:18:33
    java 初级、中级、高级工程师有什么区别?Miranda热果2017-12-08最佳答案技术不同,简单的可以理解为:初级中级的只关注代码,编程。高级的就要考虑系统的架构,整体框架。具体区别如下:一、初级工程师1、首先要学习...
  • 软件开发工程师常用工具介绍

    万次阅读 2018-05-15 02:13:28
    本文主要记录软件开发工程师在工作及学习中常用的工具,后面有时间把每个工具的基本用法都总结下。 工具合集 序号工具名称简述使用指南 1GitHub适合团队开发人员之间共同开发时使用GitHub官网 ...
  • 2019/04/12 华为通用软件开发工程师现场面试 时间轴 三月中旬做的笔试 3题ac两道 4/8 性格测试 4/12 现场面试 地点是 广州某家酒店,近地铁站的,中大过去也是要一个小时。今天还下大雨,9点开始签到,到的人还...
  • 想要了解嵌入式软件开发工程师待遇怎么样,那就先来看一下嵌入式软件工程师发展趋势怎么样,据市场分析,现在的嵌入式系统在技术领域呈现空前绝后的发展趋势,而且发展也相对而言比较快,在这个时代,随着物联网的...
  • java软件开发工程师的简历

    万次阅读 2016-03-22 14:35:53
    1.可以在51job(前程无忧)或者智联招聘投递简历 2.有项目经验(这是与应届生的薪水高的原因) 不是实习,直接试用期(拿到毕业证前后,拿到毕业证就转正)智联招聘:一月一次 ... 求职意向:java开发软件工程师
  • 嵌入式软件工程师岗位要求

    万次阅读 多人点赞 2018-04-28 01:02:21
    嵌入式软件工程师岗位要求想成为嵌入式软件工程师,必须要有两板斧。那么当前企业需要哪些技术呢?1.嵌入式上层的软件应用开发需要:精通嵌入式Linux C语言编程、嵌入式Linux C语言数据结构、嵌入式Linux项目开发流程...
  • 有些人说程序员和软件工程师的区别是:软件工程师不但要有编写程序代码的能力而且更重要的是要懂得如何去开发一个软件,怎样去学习实际的UI的观念。 有些人说就是工厂里面技术员和工程师的区别。技术员是熟练工人,...
  • 本系列课程针对有意向学习嵌入式软件开发的童鞋,从零开始、深入浅出,内容涵盖:linux系统基础、shell、linux C编程、linux系统编程、网络编程、ARM体系结构及汇编语言、ARM裸机编程、linux系统移植、linux驱动开发...
  • 学习java软件开发大概要多久?

    千次阅读 2018-03-11 21:12:28
    根据IDC的统计数字,在所有软件开发类人才的需求中,对Java工程师的需求达到全部需求量的60%~70%,对软件开发人才的需求达到了20%,还同时以每年20%的速度在增长。。由此,我国不仅在软件开发人才上存在大量的缺口,...
  • 一般是做软件的技术支持工作...当然你也可以朝软件开发上发展,但就怕你没有时间和机会搞开发。  补充:这也没什么好详细的,就那么几点:一、懂编程,有一定的程序开发经验;二、计算机操作熟练,能解决客户琐碎
  • 嵌入式硬件工程不但要求具备硬件工程师的基本技能,还必须完成部分软件工程师的工作,例如: 底层驱动的开发嵌入式操作系统的裁剪,移植; GUI、文件系统等软件的移植; 基于嵌入式操作系统的底层驱动程序的设计等。 ...
  • 要明白什么是嵌入式软件工程师,我们先从嵌入式系统(嵌入式设备)说起。维基百科上对嵌入式系统的定义如下: 嵌入式系统(Embedded System),是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机...
  • 2020年5月程序员工资统计,平均14542元

    万次阅读 多人点赞 2020-05-01 13:25:33
    平均工资 2020年5月全国招收程序员312761人。2020年5月全国程序员平均工资...2019年5月北京软件工程师平均工资19273元,工资中位数17500元,其中95%的人的工资介于7000元到45000元。 2020年5月上海招收软件工程师...
1 2 3 4 5 ... 20
收藏数 254,084
精华内容 101,633
关键字:

软件开发工程师