C# 软件开发岗面试经验总结

 

01

 

前言

 

      之前面试C#软件工程师岗位,前前后后参加了几十场面试,也积累了不少经验,今天趁着放假,汇总整理一下,分享给年后有新打算的小伙伴们!

 

02

面试前准备

 

    首先是简历,简历一定要认真对待,不能随随便便找个模板套一下就完事,它是你能不能得到面试的一个关键。其次,很多面试官也会根据你简历呈现的内容进行提问,尤其是项目经历这块,写到简历上的一定要确保自己很熟悉,切忌为了呈现更多的内容把别人做的项目都罗列上去,结果技术官一问,自己回答不上来,那就基本凉凉了。

 

     其次就是准备面试题目了。下面我先罗列出我之前面试的一部分公司的面试题目:

布瑞克农业互联网--王xx

1. 面向对象的三个特性:继承‘封装和多态
继承:就是子类实现父类的属性和方法,并在此基础上进行相关的扩展.
多态是建立在重写的基础之上的,是类与类之间的关系,是发生在不同的类之间的,子类重写父类的方法。实现不同的子类,不同的实现形态。
多态有3个条件
1:继承
2:重写(重写父类继承的方法)
3:父类引用指向子类对象
而重载是类的内部的方法构型上的不同,是发生在同一个类里面的。同一个函数名称,参数不同的多个方法,实现同一类型的功能。
封装是OOP编程中的一个重要手段,就是指把具体实现的逻辑细节在内部隐藏起来,对外部只暴露公共的、规范的接口和调用方法,
从而隐藏实现细节,使在使用的时候不用去考虑其内部的运作模式等等具体细节。以后即使是要修改其逻辑也不会影响外部调用的,
称为封装,主要是为了降低组件之间的耦合度,以提高扩展性和维护性。
2. 接口和抽象类:

3. web server/socket
4. 打开串口的方法:
设备管理器com口显示为正常即驱动可用,
电脑识别的com口我识别为3即软件上填写
com3选择串口通信波特率通常为9600可用
根据设备设置然后点击打开即可进行设备配置
5. 多线程如何精确控制某个线程:做不到
6.数据库性能优化:年龄、性别、姓名
C#类和方法的访问级别限制
类:
     类的访问修饰符有public、internal,缺省时为internal
     internal限制类在本项目中访问,不能被其他项目访问
     public使得类可以在其他项目中访问,但是先要添加对该类所在项目的引用,并且using该类的命名空间;
 
方法:
    方法的访问修饰符有private、protected、internal、public、protected internal,缺省时为private
    private限制方法在本类中访问,不能在本项目的其它类和外项目访问
    protected限制方法在本类和其子类,包括外项目的子类中访问(直接调用,无需实例化);不能在本项目和其他项目的无继承关系类,以及通过实例调用访问
    internal限制方法在项目内部所有的类访问,不能被其他项目访问
    public使得方法可以在其它项目中访问,但是先要添加对该方法所在类所在项目的引用,并且using该类的命名空间;
    protected internal使得方法可以在本项目所有的类和外项目有继承关系的子类中访问,实际是取了两者限定范围的并集,注意不是交集

天准科技:

1. ref 和out的区别?

2. 结构和类的区别?

3. 开启多线程有哪些方法?区别在哪里

4. 字符串转整形编写函数?

5. 整形数组获取最大值序号?有重复最大值如何做?

延锋汽车内饰:魏工

1.线程与进程的区别

2.python与c#线程的区别

3.数据库优化的方式有几种

3.接触过的关系形数据库以外的那些数据库?

4.多线程如何同步?

5.高斯滤波?

6.边缘提取的方式有那些?

7.bs方面有没有做过?

8. 太赫兹是什么原理?

9.你在项目中承担什么角色?做了那些事

10.你的项目用了什么设计模式?

11.架构有没有涉及,能自己设计出来吗?

12.检测结果如何分类?接口怎么做的?

13.tcp和udp的区别?

14.如何计算一个矩形的面积?

上海天马:

  1. string和stringBuilder区别?

  2. 指针和取址的区别?

  3. 类和接口的区别?

  4. 跨线程访问的方法?如何防止界面假死

  5. 通讯技术用过哪些?为啥用udp不用tcp?

  6. mysql和sql什么区别?

    7. 堆和栈的区别是什么?

 

03

高频面试题

 

根据我多场面试经历,我汇总了一下高频面试题目:

  •  多线程和进程的区别是什么?

  •  常用的通讯方式是什么?tcp和udp有什么区别?

  • 开启多线程的方式有哪些?各有什么优缺点?

  • 线程安全的方式有哪些?lock与monitor区别?

  • 讲讲你所熟悉的设计模式?每种设计模式的优缺点?你在项目中怎么用的?

  • C#中值类型与引用类型的区别,什么叫装箱和拆箱?

  • 面向对象的三个特性是什么?简述每个特性的概念?

  • C#中使用StringBuilder相比string拼接字符串时有何优点?

  • 讲讲托管内存和非托管内存?垃圾回收的机理是什么?

    IDispose接口的作用?

  • 类和接口的区别?抽象类和接口的区别?

  • 重载和重写的区别,什么叫多态?

  • 什么是委托?什么是事件?

  • 什么是MVVM开发模式?有什么优势?

  • 你用过那些数据库?数据库如何优化?

当然以上问题,一般你回答了以后,面试官都会进行夺命连环问,所以,已经要灵活掌握,懂得举一反三,不能光死记硬背。

 

04

面试中的一些技巧

 

     面试环节一般是先猎头打电话咨询求职意向,了解基本情况,完事会向你索取电子版简历推荐给用人单位,如果对方满意,用人单位一般一周内就会安排面试。正常先是技术官电话沟通或者视频面试,但个别公司可能会直接要求你去他们公司去面试,有的直接是让去笔试答题的,这种我一般直接会拒绝的,除非是你特别中意的公司,否则你可以要求他们先电话沟通,初次沟通还觉得满意的话再考虑要不去去现场面试。

        面试过程,对方一般会让你先做个简短的自我介绍,接下来除了技术问题外还会问问你为什么离职?你对我们公司有多少了解之类的?回答离职原因时,切忌不要说上家的坏话,就算上家公司实在是烂透了,也要说的委婉一点,尽量从个人的理想、追求上去说,而不是说因为上家公司加班太多、上级领导不好之类的话,不然可能对导致对方觉得你人品有问题。

     然后面试官会问你对加班的看法,或者问你能否适应短期、长期出差?这种能问基本上99%代表对方公司目前有这方面的现状,这种你能适应加班就说能适应,然后说你目前都时常加班,还能学到很多东西等等,适应不了就说适应不了,没必要刻意隐瞒,出差这个也是一样,接受不了就直接说,这种没必要勉强,很少有公司会愿意为新人开特权的。所以说,不喜欢接受不了的东西就提前明确的说,好公司很多,没必要非吊死在一棵树上。

     再个就是薪资这块,这个一定要提前想好,猎头会问你期望薪资,HR和技术官也有可能会问到,切记保持一致。在对方问你期望薪资时,不要直接就回答,最好先问问对方是年薪制还是月薪制,除了工资会有没有项目奖金或者年总将什么的,问清楚后再给说你的希望薪资。还要注意的是,对方也会问到你目前的薪资水平,如果你期望的薪资和你目前的薪资水平跨度太大,你就得提前想想如何自圆其说,我们公司之前就有几个应聘者,我们领导都面试过了,但是最后走offer流程时候被老板否了的,因为老板觉得工资直接翻倍不合理。所以,这种情况,你可以适当抬高下你的现金奖金、房补等不可体现在工资流水中的隐形收入,这样就不会让对方觉得给你加钱开高了,能提高面试的成功率。

     如果技术面试都ok,很多公司会要求再次去公司复试,这种一般会是更高级别的领导或者老板来面试,当然也是你考察公司的一个好机会,这轮面试一般会轻松很多,如果是老板的话,可能甚至不会再问你技术问题,就给你谈谈理想、画画大饼之类的。这个过程你需要考察下公司环境、公司规模、再感受一下老板人品啥的。毕竟就职面试都是双向选择,作为面试者,我们也要充分考虑这家用人单位是否适合自己,避免从旧坑入新坑。

      好了,限于篇幅就写这么多,小伙伴们还有什么骚操作,欢迎在评论区留言!

技术群:添加小编微信并备注进群小编微信:mm1552923   公众号:dotNet编程大全      
上一篇:信息搜集(一)


下一篇:maven VM options设置