Tag: 软件工程师

数据和软件工程师职责区别

近几年随着大数据机器学习的流行,除了传统的软件工程师延申出了一些和数据科学/人工智能/机器学习相关的职业:数据工程师、数据科学家、机器学习工程师、软件工程师、数据分析师。 这些职位在数据和软件工程领域中都很受欢迎,每个职位都有其特定的职责和技能需求。以下是对这些职位的简单描述和它们之间的区别: 数据工程师 Data Engineer 工作职责: 设计、构建、整合、维护大数据平台和数据管道。确保数据可以在大规模和高速地在不同系统之间流动。 技能和工具: Hadoop, Spark, Kafka, Airflow, SQL, NoSQL数据库等。 数据科学家 Data Scientist 工作职责: 利用统计学、机器学习和其他高级技术来分析和解释数据,从而获得洞察力并做出预测。 技能和工具: Python, R编程, TensorFlow, PyTorch, Scikit-learn, 数据建模,统计分析。 数据分析师 Data Analyst …

儿子问我软件工程师的工作体验是怎么样的?

儿子问我软件工程师(Software Engineer)都是做什么的, 他很好奇我的工作内容, 我简单的说就是写代码+调试=解决问题. 正好那天是周五下午, 娃在上Papworth上钢琴课, 我一般都在车里剪视频利用起这个碎片时间. 我抱着笔记本在车里工作, 从年初就在忙一个大的改动, 忙了有两个多月, 终于差不多了, 两同事代码审核(Code Review)都通过了就差一些小改动, 所以我在车里还在努力, 根据收到的建议提交了代码 (Push commits), 终于得到了approved, 就等着 Azure DevOps 的 pipeline 编译代码然后跑单元测试+集成测试(还有七七八八的检查: 代码覆盖 Coverage, 静态代码检测 Static Code …

说说软件工程师的职位头衔(Title)和级别

我现在在GE做软件工程师, 职位头衔是 Staff Software Engineer 翻译过来是 资深软件工程师. 我见过的软件工程师的职位(Software Engineer) 有以下几种: Software Engineer Intern: 软件工程师实习生. GE剑桥每年都会有十几个从大学过来的实习生, 会被分到不同的组, 然后由不同的大牛带, 一般是12个月, 每年都会有迎新和欢送实习生的会, 很是温馨. 有了在大厂的实习工作经验对于以后再找工作(转正)很有帮助. (Junior) Software Engineer: 初级软件工程师, 一般头衔不会加 Junior, 就是 Software …

记微软Principal SE的第一轮面试

前不久申请了剑桥微软研究院的 Principal Software Engineer 的职位, 翻译过来就是首席软件工程师, 微软的 PSE级别很高, 大概如下图: 总之就是大牛级别, 没干个十几二十年在软件行业做出点啥贡献的都很难达到这个级别. 我去年找工作的时候就投过微软, 可惜一次回馈都没有, 也许是我入职GE(美国通用), 大公司, 所以简历增色不少, 今年一投, 微软 Technical Recruiter 就立马联系了我(看来公司真的也是看背景的, 就和学校一样). Technical Recruiter先是一个电话互相介绍, 然后讲了一下剑桥微软做的事情. 然后就约定了第一轮技术面. 邮件里并没有特别说第一轮技术面会怎么样个流程, 但是从给的链接事先点进行发现需要开启摄像头, 然后浏览器里有协同代码编辑器, …

软件工程师数据库面试技巧之 SQL中的第二名记录

现在最吃香的工程师是 全栈工程师 (Full Stack), 因此你除了要好的算法数据结构知识外 你还需要懂数据库等计算机知识. 有人说, SQL好简单, 其实SQL也可以考考你的逻辑, 比如有这么一个简单的 (含有两个字段, 三行记录) 的关系表 (假设表名为 Employee). +----+--------+ | Id | Salary | +----+--------+ | 1 | 100 | | 2 …

软件工程师面试技巧之 动态规化 – 整数拆分

动态规化 (Dynamic Programming) 是个计算机领域里很重要的算法,我在高中参加过三次信息学奥林匹克竞赛 (ACM),每年必有一题用动归(DP)来解答. 动态规化其实就是 把问题分解成子问题+记忆子问题求解的一个过程. 你如何教你的孩子DP是什么呢? 比如:你给你的孩子5根火柴,你的孩子数了数然后说有5根.然后你再给你的孩子1根火柴然后问一共有多少根,这时候你的孩子会马上说出6根,因为他知道已经有5根了,再加上1根就是6根. 原理就是:把问题分析成更小的问题,并分而求之,子问题的解会被保存下来这样在求解更大的问题的时候就不需要再重新把中间结果再算一遍了. 动态规化的解法经常是较优的一种解法,我们来看这么一道面试题: 给定一个正整数,将它拆分成至少两个正整数,求出这些正整数的最大乘积.比如 整数2,可以拆分成1+1, 乘积是1,当输入是10,需要分解成3+3+4,这样所得的最大乘积是36. 你会怎么解?暴力搜索?这种解法不好写,而且时间复杂度也大.可以用回溯+剪枝,但时间复杂度也相对较大,特别是当N较大的时候也会时间太久Time Exceeded. 动规解答这题就较为简单.这题并没有让你详细写出怎么拆分的方案,只需要解出最大的乘积即可.所以我们有以下的方案: f(n) = max(f(n), max(i – j, f(i – j)) * j)) for …