记录荒废了三年的四年.net开发的第三次面试,苏州斯莱克
现在就业的确崩了
这次面试的时间是8月28号。距离上一次面试已经过去了一个月了,距离开始找工作已经过去了2个月。没多少找工作经验的我也体会到了什么叫就业崩了。
看了一线码农的采访计划后,我也把苏州列为了找工作的地方之一。我成都感觉公司都翻烂了
- 要么工资高,15000,但要求开发测试运维一条龙,什么
.netcore
,devops
,CICD
,单元测试
和集成测试
,scrum
敏捷开发,k8s
,前后端分离
,RabbitMQ
,Redis
,微服务
全整上。我CICD,单元测试这些部分有学习,但也没项目用过,敏捷开发除了外企常见,还有哪能接触?上不去,真的上不去。 - 要么就是工资相对高,12000左右,搞工业开发这一块,但是要有经验,我始终插不进去脚。
- 要么就是工资低8000甚至9000起步,我寻思这是应届生?跟我工资没差我跳过去干什么
我发觉我目前这个目前这个技术阶段还挺尴尬的。技术和经验说深不深,说浅不浅,到底是上不能上,下不得下。
这次面试的公司是苏州史斯莱克精密设备,其基地应该是位于太湖边上的孙武路。HR介绍该公司是清华毕业的华人创建,我在想该不会是高华润人吧?主要业务是易拉罐瓶盖生产设备制造。近年来开始设计新能源汽车的电池盖。据说的技术迁移应用。
面试前,HR首次询问的工资,我回答的是14万一年。初试是腾讯视频线上会议面试,商定在晚上6点半。一个应该是业务经理,一个技术工程师,年龄均偏大吧,可能有40多了。
技术工程师提问
首先是我做自我介绍
我叫XX,今年27岁,20年毕业与西南石油大学。毕业之后就一直在目前这家XX公司。所学的专业是软件工程。在这边基本上一直在做软件开发。前期在做运维,大概一年之后转向开发。早期是做winform的运维,当然也参与了一点后面的开发,但是参与得比较少。然后转为asp.netcore的开发。到目前为止大概是开发了3个左右的项目。大概情况就是这样。你最近开发了项目前端用的是vue框架还有nuxt,后端用的webapi。那我问一下vue的一些问题吧。vue组件之间的通信你会吗?就简单说一下大概的过程,父子之间通信的过程
vue父组件向子组件传递信息是通过那种类似于html标签的形式,当然他不叫html,然后设置这个标签的属性,就把数据数据交给子组件了。然后u子组件内部通过那个defineProperty(defineProps)接受。至于子组件调用父组件的方法,这个学的不是很深入,整个框架是前端搭建的。好吧,那个nuxt,他会帮你把目录生成好,然后你在项目的目录下添加图片。还有页面就先当与你们只需压迫在前端调用一些后端的接口吗?那前端的交互什么的,页面的动作你们自己写吗?比如下拉框啊等等
如果是下拉框的话,我们是使用的elementui,elementplus
,所以说自定义组件这块不是很了解。就相当于前端美工给你们把那个页面做好,你们直接负责API?
美工,他只给我们设计图,我们自己把设计图转化为页面,然后其实后端也是我们自己写。(所谓的前后端分离,人不不分离)好,那么webapi主要是与前端vue用什么方式通信?
http由几种通信?你是说http method方法吗?最常用的就是get,然后涉及到表单的话会用post。当然还有put,delete,但是我们没有使用这些,最常用的还是get和post。这几种方法是怎么床底参数的?
get是直接在url中写参数,post是在头部后面的请求体中存放参数。你前两个项目使用的efcore,后一个项目使用的sqlsugar,那sqlsugar那个项目怎么防止注入呢?
什么情况下会发生注入?首先后端的是直接使用sql查询,其次呢,如果使用了sql,又没有使用参数化查询的话,就会存在sql注入。但是我们一般是直接写linq,如果查询比较复杂的话,写不出来,或者说下起来很费劲的话,才会写sql。那个多租户,就是sqlsugar的多租户你们用过吗?
我没有用过多租户,请问多租户指的是什么呢?就是数据库,你们的数据库服务器是同一个吗?多租户就是数据库有几个服务器的时候,同一个sqlaugar客户端访问不同服务器
哦,明白了。我们就只有一个数据库服务器,所有对应的应用都去访问那个服务器,所以没有这种情况。我估计的有很多服务器才能碰到这种需求。sqlsugar有一些自带的方法,比如事务,里面的事务是怎么样的?里面包含的所是什么样的情况?
锁的话我不太了解?只听说过悲观锁,乐观锁,不知道是不是指的这个?事务的话,我想一下,sqlsugar不想efcore,有一个saveChanges方法,在一个事务中把所有改动都保存到了数据库。但是sqlsugar,我没有看到这种方法。但是sqlsugar涉及到多表修改的话,还是需要手动创建一个事务的,但是我们目前还没有使用到。那你说一下单向绑定和双向绑定
单向绑定的话,用的最多的是ref
对象,还有react
对象,但用的比较少。然后再标签中引用这个对象,变量,就可以实现单向绑定。至于双向绑定,他其实是一个回调,界面上改动数据后调用回调函数,但是vue提供了一个v-model
指令封装了这个,就可以直接使用来实现双向绑定。说一下using关键字的作用
第一个作用是引入命名空间,第二个作用是给命名空间取别名。还有就是非托管资源。
比如说我们在C++里面写的函数,里面使用了new申请了非托管内存。在C#中就可以使用dllimport
导入C++中的函数,还可以使用C#类对这些函数进行封装。然后这个类继承IDispose
接口,在dispose方法里面释放非托管资源。当然这个释放方法是C++里面暴露出来的一个函数。然后我们在using代码块里面创建这个对象的时候就不用担心内存泄漏,不用手动去调用释放函数,能够自动释放非托管资源,这个比较方便。之前你们做那个项目,里面用到了那个大数据统计
大数据,我不知道这个概念指的是什么?就是数据表里面,每天大概会产生几百万条数据那种
没有,我碰到的最多的话,是一个实时数据表,但总共才5000多万条数据,但是也没有说每天产生几百万条数据那么夸张的。那如果是想要看很多数据的话,要如何让他更高效呢?
嗯,首先就是分页查询。还有就是取决于表,如果说有很多比必要的字段的话,是不需要查询出来的。特别是vue,应该说elementui,在数据量比较多的时候,他就比较卡。使用分页是很有必要的,大概800-900条就要分一次。能说一下前端虚拟化吗?
我不太确定这个概念?就是一次性查询出来的时候也,都放在页面,嗯,内存里面,然后渲染的时候,不把内存里面的数据都渲染出来。这样的话,流畅度比较好,也不需要分页,像是滚动加载
这种我没有用过,但是我跟绝跟分页那个也挺像。因为我们有时候查询数据的时候,也是全部查询出来,然后点击下一页的时候,从内存中过滤出相应位置的数据。而不是说到数据库查询那边分页。你之前做过设备通信吗?
我没有直接跟硬件通信过,因为我们这这边是有硬件小组的。他们专门去硬件上采集数据,然后有两个方向。一个是存储现场的sqlite中,一个是通过MQ传回中心的服务器。OK,那你之前用过消息队列吧?
我没有用过专门的消息队列,只是使用过redis模拟的消息队列,使用lpush和rpop,因为也提供了通知功能。但是没有用过RabbitMQ。要是有一个请求,花了很长时间那种,怎么处理?
如果是不需要立即回显数据那种,可以使用一把方法接口,然后拉一个排队的托管服务,把请求的操作交给托管服务去慢慢处理。然后请求直接返回。这是第一种。第二种,像是需要回显数据的,不好意思,我有点忘了问题?要是有一个请求,花了很长时间那种,怎么处理?这会带来不好的体验,怎么去优化这个请求,只是针对单个请求,考虑为什么请求时间会变长
在头一个阶段,比如果并发量比较大的话,请求可能卡在排队阶段,这种最好使异步方法接口。理论上说是有用,但我们没有碰到过这种,可能业务量比较小。
单个请求时间比较长的话,其实最多的是卡在数据库的查询上面,那可能就需要注意一下sql有没有走到索引上面去。这种情况我们以前蹦到的比较多,后来是统一处理的。写过存储过程吗?就是那种比较复杂的sql
没有写过,我们使用的是物化视图。有其他程序跑在服务器上,去更新这个视图。
业务经理提问
问一下你关于业务方面的问题。你们是人工作业还是通过井下设置直接采集上来
我们的设备主要是接实时数据,这是一个方面,还有就是比如压裂车上面的一些作业数据,它上面本身是带有传感器的。然后他们技术员会去看那些数据。那个采集软件是技术员手动去填的。只有实时数据是自动采集的。那个支持中心项目,你在这里面主要是做运维的工作是吧
是的。这个项目我都不知道有多久了,因为我进来的时候已经是开发完毕很久了。我来了之后主要是负责我们业务这一块功能的运维。里面有实时数据、视频监控啊。那个视频监控是实时的还是录像?还有那个监测,那个工程作业是直接对井下作业实时监测的,还是只是派工用的?
是实时视频。监测主要是靠实时数据。还有就是结合技术员开工之前填报的信息做一些预警。派工的话,是中心派工之后,他们才开始作业。这种派工模式,实际上就是拿钱的个干活的从原来的一个公司被分到两个公司去了。
那这个现场的话,你有没有去过?有没有参与过现场的工作?
没有。我没有去过现场,只是做开发。现场组内有几个人去过,一方面是安装设备,一方面是调试软件这些。那现场作业系统这一类系统,井下作业只是在地面上,还是也参与井下?
嗯,地下有一个部分是参与了的,就是泵注那块。会看加水加砂的情况,到了哪个地方,显示在界面上,比较类似于你说的井下的。手机端的话,你有没有参与开发?
手机端我主要是提供接口,作业不是手机端的主要功能。主要用于现场管理,比如班前班后会,签到,巡检这些。真正作业的时候,他们是用电脑。那实时数据有没有考虑到弄到手机端去展示?
有。手机端也有实时数据展示功能。不过那是给中心的领导用的,他们在工作的时候用手机看比较方便。现场的手机端没有这个功能。
之后就是技术工程师提问
你们的手机端开发使用的网页还是安卓,还是微信小程序?
网页的话,是有专门的那种壳,嗯,叫什么(electron),里面封装了一个浏览器核心吧。但我们这边用的是原生安卓开发,是移动端小组做的。数据库用到的比较多的是哪几种?
中心业务上用的最多的是Oracle,现场用的是mysql,他们数据库表结构是一样的。填了数据之后,通过触发器,记录在一个表里面。有一个程序去读取这个表的触发记录,然后找到相应数据,放到MQ中,传回中心的数据库上面。实时数据的话,就使用的sqlite。那个数据比较多,每个月一个文件,每个几百兆,大概有几个G吧,我不确定这个数据放mysql是否合适。MQ这个数据发回中心的过程,
我不太清楚这方面,本地有一个上传软件,但不是我做的。但我知道这方面确实有问题,前两年MQ传数据回来时就经常丢数据,主要是消息积压。你接受出差吗?
接受。你家在成都吗?
我加没在成都,我家在巴中,也是四川,比较小的一个城市。你出来这么远,你家里人接受吗?
我觉得他们可能不会干涉太多。你出过差吗?比如说新疆那边,乌鲁木齐那边
我出过,也是新疆那边,是旁边的一个城市,库尔勒,距离还是挺近的。大概四五个月。我们大部分工作都是在苏州这边的人员做的,有些具体的项目,也要跟着现场去。所以我在想,我们有个项目挺适合你的
我知道,C#搞工业去现场避免不了的。这样的话,我猜他们也是想搞前后端分离的现场应用。然后用Electron使用SPA搞前端。刚好我这前后端都开发过。但是怎么说呢,我最希望的还是实践一下WPF,毕竟是.Net程序员啊。如果MAUI+Blazor熟悉的有福了,桌面端、网页端、手机端也一并做了。可惜我手机端只用过一点MAUI8原生。
还有一上来就让我跑现场搞那个项目,很难不让我怀疑,就是让我去冲项目的,我一从现场回来就会被解雇了。而且这和他们公司HR说的目前的业务也没有联系。难道在新疆建设工厂吗?你还与问题吗?
今天晚上的面试我算是通过了吗?因为现在是视频面试,有一些笔试我们都准备了的,还有一些面试题目。但是视频面试就只能这样。之后的话,HR会通知你
好的,我知道了。
评价一下
我是没有太重视vue的,在3、4月份,每天中午午休吧vue的官方文档和看完了,也看了下vue-router。然后项目上切换到vue了。但是关于应用构建这块的工作,实际上是nuxt提供了。我把重心放在wpf和asp.netcore这边,这次的面试提问是出乎我的意料的。唯一的不同时我WPF没有在工作中用过,但vue在工作中用过,对于如何从零构建一个应用,显然时后者更有经验。但是vue/elementplus,或者或浏览器的响应式性能太烂了,一个表格,1000条数据就卡。
这在苏州是正常工资吗?我没见过市面,不了解苏州这边的人力市场
面试总是,要么很长时间没有,让我十分焦虑,要么就扎堆来,挑战我的时间表。不知道为什么,你们也是这样吗?
技术官问的东西都不是很深入那种——八股文式的询问,和前面的两次面试感觉很不同。如果有人说他们是来找解决方案的,我都要信了。我不知道这个面试是否可靠?
成都就业现在真的这么难吗?
我这个阶段的程序员真的是上不能上,下不得下的尴尬阶段吗?
我也在捡起英语,想着两年后外语对话,能不能进外企。但是今年有来了个外企撤离潮,怕要成49年入国军
记录荒废了三年的四年.net开发的第三次面试,苏州斯莱克的更多相关文章
- 2017-2018-2 20165207 实验四《Android开发基础》实验报告
2017-2018-2 20165207 实验四<Android开发基础>实验报告 检查点1 安装测试Android Studio: 安装Android Studio 安装过程比较艰难,一 ...
- 三星四核RP4412开发板的root问题
问:荣品四核RP4412开发板的板子是root权限吗? 或者怎么root? 答:su . android 我们提供的是root用户 问:root以后的授权管理器没法运行. 我需要root,我要在and ...
- 20145212 实验四《Andoid开发基础》
20145212 实验四<Andoid开发基础> 实验内容 安装Android Studio 运行安卓AVD模拟器 使用Android运行出模拟手机并显示自己的学号 实验过程 一.安装An ...
- 20145206实验四《Android开发基础》
20145206 实验四<Android开发基础> 实验内容 ·安装Android Studio ·运行安卓AVD模拟器 ·使用安卓运行出虚拟手机并显示HelloWorld以及自己的学号 ...
- [置顶] CSDN博客第四期移动开发最佳博主评选
CSDN博客第三期最佳移动开发博主评选圆满结束,恭喜所有上榜用户,为继续展示移动开发方向优秀博主,发掘潜力新星,为移动开发方向的博客用户提供平台,CSDN博客第四期移动开发最佳博主评选开始.同时,获奖 ...
- 2017-2018-2 20165237 实验四《Android开发基础》实验报告
2017-2018-2 20165237 实验四<Android开发基础>实验报告 实验报告表头: No.1 实验要求: Android程序设计-1 实验要求: 参考<Java和An ...
- 20145221 《Java程序设计》实验报告四:Android开发基础
20145221 <Java程序设计>实验报告四:Android开发基础 实验要求 基于Android Studio开发简单的Android应用并部署测试; 了解Android组件.布局管 ...
- 2017-2018-2 20165236 实验四《Android开发基础》实验报告
2017-2018-2 20165236 实验四<Android开发基础>实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:郭金涛 ...
- 2017-2018-2 20165215 实验四《Android开发基础》实验报告
2017-2018-2 20165215 实验四<Android开发基础>实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:张家佳 学号:20165215 指导教 ...
- 2017-2018-2 20165306 实验四《Android开发基础》实验报告
实验四<Android开发基础>实验报告 实验报告封面 实验内容 Android程序设计-1 实验要求: 参考<Java和Android开发学习指南(第二版)(EPUBIT,Java ...
随机推荐
- Mac下Eclipse打不开了怎么办
其实这个问题能搜到很多答案,但是对我有效的只有下面这一种. 背景 我需要使用到Eclipse,就下载了它的特定版本,用于开发RAP的. 连续两次都是使用后关闭,就再也打不开了. 选定的解决方案 试了好 ...
- 全网最适合入门的面向对象编程教程:15 类和对象的 Python 实现-__slots__魔法方法
全网最适合入门的面向对象编程教程:15 类和对象的 Python 实现-__slots__魔法方法 摘要: 本文主要介绍了 Python 中创建自定义类时不同实例属性保存的基本原理和缺点,介绍了__s ...
- 解决方案 | cad选择集找出包含特定字符串的多行文本
代码如下: 1 # 选择文本中出现特定单词的多行文字 2 # 下面的代码将选择条件定义为文本字符串中出现"The"的任意选项.此示例还演示了选择方法的用法:MtextSelectB ...
- oeasy教您玩转python - 012 - # 刷新时间
刷新时间 回忆上次内容 通过搜索 我们学会 import 导入 time 了 time 是一个 module import 他可以做和时间相关的事情 time.time() 得到当前时间戳 tim ...
- 深入探究 Golang 反射:功能与原理及应用
Hi 亲爱的朋友们,我是 k 哥.今天,咱们来一同探讨下 Golang 反射. Go 出于通用性的考量,提供了反射这一功能.借助反射功能,我们可以实现通用性更强的函数,传入任意的参数,在函数内通过反射 ...
- SMU Summer 2024 Contest Round 2 (7.9)zhaosang
A-A http://162.14.124.219/contest/1006/problem/A 考查用vector画图 我枚举到n==5才开始用,浪费40分钟,还是找规律太慢,得多学 做题代码如下: ...
- 【JavaScript高级04】作用域和作用域链
1,作用域 作用域表示的是变量的有效区域,JavaScript中作用域分为全局作用域和函数作用域(在es6之前没有块作用域).其确定时间为编写成功之后就已经确定好了. 作用域的作用是用来隔离变量,不同 ...
- Nginx 工作原理简介
在了解Nginx工作原理之前,我们先来了解下几个基本的概念 以及常见的I/O模型. 基本概念 同步:就是指调用方发起一个调用,在没有得到调用结果之前,该调用不返回.换句话说,也就是调用方发起一个调用后 ...
- Python 插件式程序设计与开发实践总结
插件式程序设计与开发实践总结 By:授客 QQ:1033553122 开发环境 win 10 python 3.6.5 代码结构
- mysql 忘记root密码怎么办?
忘记root可以跳过grant table来登录 1.打开命令行输入以下命令 mysqld -nt --grant-skip-tables 2.在打开一个新命令行,输入以下命令可以登录, mysql ...