
博文可能存在过时,请注意甄别。
题外话:如果你想向我咨询软件实施工程师相关问题,我会劝退。非万不得已不建议转岗,如果可以就职开发岗就继续做开发哟。
关于软件实施工程师的面试题,我个人也总结了一些,仅供参考。需要对主流 DBMS 厂商发行的数据库软件,例如Oracle、MySQL、SQLserver以及国产数据库DM(达梦)有所了解,并能够熟练部署运用。
如果具备一些服务器方面的知识,比如Windows Server 和 Linux 服务器相关知识。熟悉 Linux 基本维护是加分项,这里所说熟悉指至少熟练运用 Linux 基本命令与常用命令,软件管理部署,基本权限,系统维护。
说实话,目前软件实施这个行业资料稀缺,也很缺人才,体系还不够成熟。在小公司,你可能会身兼数职,比如配合开发工程师进行测试,也有可能承担部分运维方面的工作。以至于某招聘网站出现了开发运维测试实施工程师这种岗位。
本人之前从事 Java web 后端开发,后来转向了软件实施行业,深知这个行业很缺人。发展方向,可以朝着项目管理方向提升自我,比如利用空余时间考一个软考高项信息系统项目管理师、项目管理专业人士认证(PMP)。
关于,软考相关信息,我总结了一些,希望对你有所帮助。
软考职能分类,我做了思维导图,仅供参考,以软软考官网为主。
这是我做的项目管理英文术语思维导图,仅供参考哟。
软考高项信息系统项目管理师报考费用还好,不是很贵。
如果你想进一步增进项目管理知识,可以购买软考高项信息系统项目管理师原版教材,即便没去考证,我相信自学完,也会对你有好处的。考证,只是检验你学习理论知识掌握的程度。更多的是需要平时灵活运用到软件项目实施过程中去。当然,这也是我个人一点点理解。
如果你想速成,只为应对考试,这本《信息系统项目管理师》5天修炼第三版教程可作为参考辅助教材,但是精简了许多内容。
学习是一个持续过程,记得写札记(笔记),考试真题可以使用电子版,如果有强烈意愿使用纸质试卷,可以购买(个人不推荐)。比较重要的是押题。关于密卷论文题目押题,看运气,有可能当年会压中,我 2023 年购买时,其中一道论文题压中了 2023 年上半年考题。
是否购买全套官方教材,看你个人取舍了(个人不推荐)。
友情提醒:前往考场考试,一定要关掉所有闹钟,然后仔细检查一遍,最后关机。否则手机铃声响了,考试成绩直接作废。
个人目前有几个项目的现场实施经验,也与许多人打过交道。关于面试这方面,出题也差不多。如果是医疗行业,也许使用微软的那一套比较多。更注重的是临时应变能力和 SQL 的运用能力,以及对项目实施布控的周期预估和控制。
如果你有实际项目经验,基本上不会遇到笔试题。一般情况先与 HR 交谈,然后可能会与项目经理或者工程部主管进行沟通。下面给出一个面试复盘进行参考:
1、作为一个软件实施工程师你的职责是什么?该岗位需要具备什么样的能力?
解答:
2、你熟悉的远程有哪些方法?各种方法应该怎么配置?
解答:
win10还有自带的远程桌面
开启远程桌面协助
快捷键win + r打开任务输入mstsc命令打开远程桌面。
关于远程桌面补充一些个人工作中使用过的。
有桌面也有服务器版,个人主要在Windows平台使用:
目前个人更趋向于ToDesk,更轻更快,体验友好一些。
云端远程桌面,个人主要在Linux平台使用:
Linux发行版操作系统使用ssh远程连接:
文件传输工具:WinSCP-5.11.2-Setup。
3、在你进行实施的过程中,公司制作的一款软件系统缺少某一项功能,而且公司也明确表示不会再为系统做任何的修改或添加任何的功能,而客户也坚决要求需要这一项功能!对于实施人员来说,应该怎么去合理妥善处理这个问题?
解答:
4、如销售签有一外地客户,要求实施人员在客户现场一周内完成所有项目实施,而标准实施一般为期一个月,针对以上情况实施人员应该如何应对?
解答:
5、在项目实施过程中,使用者对产品提出了适合自己习惯的修改意见,但多个使用者相互矛盾,应该如何去处理?
解答:
采用求同存异法。
6、系统启动后,不能连接数据库,可能是哪些方面的原因?
解答:
7、如果有一个不太懂电脑的客户,你应该采取什么样的方法去教他用公司的软件产品?
解答:首先教客户熟悉基本的电脑操作,然后参考相关文档操作,实际根据软件的复杂程度去教会客户熟悉使用公司产品。遵循由易到难,简单的可以直接教会客户熟悉运用。复杂的一步一步是jio印。
也可以做其它的补足:
8、针对于已有5年以上的客户,其产生的历史数据可以怎么处理?
解答:
9、一般数据库若出现日志满了,会出现什么情况,是否还能使用?
解答:
10、已知A、B两表A.id=B.AID请分别写出内外链接的sql语句,并说明区别?
解答:
注意:外连接是可以省略outer关键字的,例如:左外连接left outer join 简写为left join,右外连接同理,后面配合on关键字。
内连接:
左外连接:省略掉了outer,下同。
右外连接:
关联查询有6种,常用的两种,内连接和外连接。个人实际工作中内连接使用更多,具体视工作情况而定。这里不做详细说明,网上教程很多,可以自行参考。
菜鸟教程直通车:MySQL 连接的使用 | 菜鸟教程
面试了几家招软件实施的,基本上前几道笔试题是考量你的现场应变能力,后几道笔试题是考量你对SQL的运用,关联查询这方面的试题居多。软件实施一般是需要去固定的场所驻场的,需要有自己的一套方案。也需要结合现场的实际情况,灵活变通运用。这行业是需要靠长期的累积行业经验的,不是一蹴而就的。
--------------------------更新后的补充--------------------------
之前一些实际SQL操作,我直接引用了别人一些教程链接,发现在打广告就删掉了。引用菜鸟教程依旧保留,毕竟这货干净简洁。
思来想去,还是自己重新补充一些,毕竟Oracle方面的教程都比较久远了。以后可能不会像这样将具体内容更新进来了,会以链接形式发自己的面经和时间工作经验总结。当然,此次更新的内容也将以单篇发布出来。
官方提供的sakila和world数据库,官网下载地址已经提供,可以下载进行参考学习。
sakila-db数据库包含三个文件:
world-db数据库,表结构与data数据包含在一起:
Oracle11g安装后自带有scott用户,可以用来练习。主要用到的是EMP和DEPT表,想起了当年用Java的ssh框架写的第一个CURD的demo示例就是Oracle的这两张表,因为这两表有关联关系。
我的测试环境基于:
图解联合查询
内连接:统计的内容是table1和table2的重合部分。
左外连接:可以省略掉outer,统计的内容是以table1为主的部分。
右外连接:同样可以省略掉outer,统计的内容是以table2为主的部分。
MySQL中的内连接查询关键字:inner join on,只作为演示,就不执行explain执行计划去判断执行效率了。小小的建议,在测试这些个联合查询的时候,可以不用带太多的过滤条件看看三种联合查询的区别。
MySQL中的左外连接查询查询关键字:LEFT OUTER JOIN
MySQL中的右外连接查询关键字:RIGHT OUTER JOIN
主要以SCOTT用户作为示例,查看SCOTT用户下有哪些表,这种方式需要以dba管理员身份运行SQL语句查询:
ower代表了用户名,所以直接查找SCOTT用户,TABLE_NAME:代表了表名。
Oracle中的联合查询,同样以员工表(emp)和部门表(dept)进行演示操作。
Oracle中的内连接:inner join on
根据部门编号进行关联查询,进行分页查询,每页显示5条数据:
左外连接:left outer join on
右外连接:right outer join on
全连接:full join on
组合查询:union
组合查询:union all
union和union all是有区别的,我列举的例子进行了模糊匹配,没演示出来效果。使用union all后DBMS不会取消重复的行。
去掉后面的like条件,使用union统计的数据为14行,使用union all统计的数据为19行,其实不难理解,all就是全部。
tips:Windows中CMD命令窗口使用color a即可调用出黑色背景绿色字体,color f0则是快速调出白色背景黑色字体哟!
护眼色:R:181 G:230 B:181
示例:使用world数据库中city表进行演示分页查询,通过desc展示数据结构,尤其是配合开发进行联调的时候很常用:
查询world数据库中的city表前5条数据:
同样使用desc关键字查询emp表结构:
分页查询示例:使用rownum关键字进行演示Oracle中的分页查询。
查询scott用户中emp(员工表)的员工empno:编号、ename:员工姓名以及伪列rowid,只查询前5条数据:
Oracle进行分页查询常用方式一,查询第6~11数据通过嵌套子查询,使用到关键字rownum和where:
Oracle进行分页查询常用方式二,先进行order by排序,再分页查询,查询第6~11数据:
下面所讲的函数大多数标准SQL数据库是支持的,但也要依据实际情况做测试验证,个人主要验证的是MySQL和Oracle。
重点:count、sum函数在我们如果要迁移数据的时候,避免不了需要手动去统计求和对比迁移前后数据的一致性。
介绍几个聚合函数:
如下则演示同时使用多个函数,查询Oracle数据库scott用户的emp表:
查询出来的结果:count统计员工总数,sum求和所有员工的薪水总额,avg统计所有员工平均薪水,substr则是截取到小数点后两位数。
返回平均值avg,一般配合substr关键字去截取,通过计算保留小数点后两位。
统计某公司员工的平均薪资:
返回统计行数count
统计某公司员工总数:
返回总数(求和)sum,sum函数一般会配合decode函数使用。上面的黑色背景看久了眼睛累,特意换了一种护眼色。字体颜色就没有特意更换,字体稍微点大了一丢丢,看的更舒服。
统计某公司所有员工薪资总和:
tips:count函数在工作中使用的很频繁,你不清楚某张表中有多少条记录,需要统计一下再处理。
返回最大值max
查看员工中薪水最高的那一位:
返回最小值min
查看员工中薪水最低的那一位:
Oracle中的rownum伪列
统计公司员工中的最后一条记录,通过rownum实现:
MySQL中的分页limit关键字
通过limit关键字实现,根据sakila数据库中的actor(演员表)为例子返回最后三条记录,使用actor_id进行排序。
注意:limit属于MySQL扩展SQL92后的语法,在其它数据库中不能通用。Oracle的分页可以通过rownum来实现,上面也介绍了。
group by函数
配合聚合函数sum使用,查询Oracle中scott用户下的emp表。使用group by进行分组,然后统计公司各部门员工的薪资:
having函数
区别:having和where的区别在于,having是对聚合后的结果进行条件的过滤,而where是在聚合前就对记录进行过滤。如果逻辑允许,应尽可能用where先过滤记录,由于结果集的减小,对聚合的效率明显提升。最后再依据逻辑判断是否用having再次过滤。
配合聚合函数使用,Oracle中的scott用户下emp与dept表。
先对部门名称进行分组,然后使用having过滤出薪水总和大于10000的部门:
凡事应以实际工作场景而定。个人的以一些理解仅仅是建议,最终的应用还需结合实际应用场景。软件实施对SQL的函数、触发器和存储过程没有太高的要求,但也需要会基本的运用。在某些特殊的场景下,使用这些SQL的核心知识将有助于提高我们的工作效率。
函数关键字:FUNCTION
使用第三方客户端工具新建函数,会自动生成一些模板:
触发器关键字:TRIGGER
使用第三方客户端工具新建触发器,会自动生成一些模板:
存储过程关键字:PROCEDURE
支持完整事务的存储引擎,在保证数据的完整一致性情况下,尽可能多的使用commit事务提交。利用函数和存储过程一个好的示例,在MySQL中快速生成千万级别的数据大表进行测试就可以应用到,同时还能联想到测试性能。这是勾起我们学习的动力,一个比较好的方法。
使用第三方客户端工具新建存储过程,会自动生成一些模板:
这是一个MySQL官方提供的拥有存储过程、触发器和函数示例的电影出租信息管理系统数据库。并且官方提供了EER模型,便于理解每张表之间的关联关系,可以使用MySQL workbench打开sakila.mwb进行参考学习。如果你能完整的看完这篇文档,你会发现在一开始我就提供了sakila数据库的官网下载地址。
sakila数据库视图:actor_info,演员信息视图
使用DESC关键字进行查看视图结构,这个关键字很实用哟。视图和表结构很像,以sakila中actor_info视图进行展示:
sakila数据库存储过程:film_in_stock,电影库存
官方的一个示例:创建一个存储过程,声明了三个常量字段,然后分别赋值给演示字段,最后将找到的记录复制存到了p_film_count中。这里我为何说是复制呢?是因为使用到了SELECT ... INTO关键字。
函数、触发器和存储过程最主要的一块在BEGIN {业务逻辑区...} END这一块区域。
关于函数我就不列举MySQL官方提供的示例了。
给出一点小小的建议,感觉对你没啥作用可以忽略掉:首先快速熟悉语法使用,对官方的示例进行解读,然后运行验证。最后,书写一些简单的示例达到熟练运用目的。不要只停留在想要执行,而是立即执行并带着思考去看待问题。多问一个为什么,思考本质。
——————更新于2022-3-14——————
更新文章:最近回顾以前工作,发现这些操作符也挺常用的。
终身学习,源于某一次面试的总结,结果停不下来了。以上也是对 SQL 常用联合查询以及聚合函数的一个总结,希望能对你的工作与学习有所帮助。善于总结,其乐不穷。好记性不如烂笔头,多收集自己第一次尝试的成果,收获也颇丰。
静下心来,才发现原来不会的还有很多。
一分耕耘,一分收获。
多总结,你会发现,自己的知识宝库越来越丰富。
如果觉得总结的还不错,可以收藏并点个小小的赞哈。
博文可能存在过时,请注意甄别。
—END—
