最近想换工作的念头特别强烈,面了几家公司没有拿到满意的offer,心仪的公司面完锁HC,有点无奈,感觉今年有点卷,把碰到过的面试题总结下。

WPF相关:

1.定义依赖属性需要注意哪些地方?

(1)依赖属性的名字必须以Property结尾。

  (2)如果不需要监听属性值的变化,不需要绑定,可以用PropertyMetadata,避免性能的浪费。

  (3)对依赖属性值的变化监听应该使用回调,而不是写在属性构造器里面。因为对依赖属性的赋值,不一定会走属性构造器。

2.Invoke和BeginInvoke的区别。

  (1)Invoke是同步的,将消息丢入消息泵后会等到消息被消费完才会返回。

  (2)BeginInvoke是异步的,将消息丢入消息泵后直接返回。

   两者在使用区别上,主要是看后续的代码是否需要异步进行。比如说,后台有上百张图片文件需要读取并显示到界面上,则可以将读取的操作放入子线程中操作,将生成BitmapSource通过BeginInvoke推送给UI线程去显示,可以不影响后续其他文件的读取。如果这个地方使用Invoke,则可能会需要后续其他文件的读取效率。

3.ControlTemplate 和DataTemplate的区别。

ControlTemplate定义控件的外观,DataTemplate定义数据展示的外观。

4.WPF和Winform有什么区别?

winform 的界面绘制是基于GDI的,程序启动速度快,适合敏捷性开发。WPF是基于DirectX,依赖硬件,可以发挥硬件加速。对于大型项目来说,WPF要比Winform性能更好,界面能够高度定制。

C#相关:

1.接口和抽象类的区别。

  (1)接口没有构造函数,不能有字段变量,不能定义每个方法的访问权限,方法必须是抽象的,没有函数体。

  (2)抽象类可以有构造函数,可以有普通的字段变量,可以定义每个方法的访问权限,方法可以是非抽象的,可以有函数体。

2.说下CLR的内存管理机制。

  CLR的GC使用的是引用跟踪算法(不是引用计数!),每次GC开始时会从一个根开始沿着对象引用的链路去查找链路上所有对象的引用,找到该对象的引用,则将该对象的内存标志字段设为1。遍历结束,会将所有标记字段为0的对象清除,并将幸存对象压缩,清除内存碎片化。

  其中的根,可以是全局对象和静态变量的引用,形参的引用,局部变量的引用,还有所有对象引用的CPU寄存器。

  再深入一些,可以讲GC的0代,1代,2代。0代就是内存堆初始化时生成的对象,初始大小为256KB,当0代即将超出容量的时候,会进行一次GC,将幸存的对象转入1代,并将0代扩容。1代初始大小为2M,当即将超出容量的时候也会进行一次GC,将幸存对象转入2代,并将1代扩容。2代的初始大小为10M,当二代即将超出容量的时候进行一次GC,并将2代扩容。此时2代的幸存对象不会升入3代,2代的垃圾回收即是完整回收,会回收所有代的对象。

  这样做的好处是可以提升垃圾回收的性能。

  另外,可以触发GC的几种情况:
  (1)主动调用GC.Clloect()方法,并不推荐这种主动调用的方式。

  (2)系统报告低内存。

  (3)CLR卸载AppDomain

  (4)CLR正在关闭,应用程序退出。

3. EF中的AsEnumerable和AsQueryable 的区别

  AsEnumerable是现将数据加载进缓存再进行处理,消耗更多的资源提升查询效率。AsQueryable 是现将操作翻译为Sql语句操作数据库。

  如果是查询操作比较多,可以用AsEnumerable。如果是一次性获取较多的数据集,则优先使用AsQueryable 。

4.引用是指针么?有什么区别么?

引用本质上是指针,但是引用≠指针。引用在初始化的时候已经确定了类型对象,创建之后无法再变更到其他类型对象上,而指针可以指向任何对象的地址。

5.new 关键字有哪些用法?

1.运算符,创建对象

2.修饰符,隐藏基类中的继承成员

3.用于泛型类型中的类构造函数约束

6.new 关键字创建对象的时候做了那些事情?

 1.计算类型及其所有基类字段所需要的内存,其中包括同步索引块和类型对象指针所需要的内存。

 2.在托管堆分配内存。

 3.调用类型的构造函数并传参,初始化字段,同步索引块,类型对象指针。

4.返回地址引用。

7.设计模式的几大原则。

职责单一原则,开闭原则,依赖倒置原则,迪米特法则,里氏替换原则,接口隔离原则,合称复用原则。

数据库相关:

1.什么是脏读,不可重复度,幻读?

脏读:一个事务读取了另一个事务已经修改但还未提交的数据。

不可重复度:同一个事务多次执行同一条查询语句,得到的行结果可能不一样。

幻读:同一个事务多次执行同一条查询语句,得到的数据集结果可能不一样。

2.事务的隔离级别?

1.未提交读:最不安全的隔离级别,允许脏读,不可重复度,幻读

2.提交读:不允许脏读,允许不可重复度和幻读

3.可重复度:不允许脏读,不可重复读,但允许幻读

4.串行:安全级别最高,不允许脏读,不可重复读,幻读,但执行效率最低

3.Mysql中的MVCC是什么?解决了什么问题?

MVCC,多版本并发控制,快照读,给每一个执行事务创建某个版本的数据镜像,在不使用数据库锁的情况下解决不可重复读的问题,提高数据库的并发性能。

后面想到了会继续补充。

近期碰到的一些面试题--WPF、C#、数据库的更多相关文章

  1. 云时代架构阅读笔记十五——之前碰到的Java面试题

    1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 2.Java有 ...

  2. php面试题之五——MySQL数据库(基础部分)

    五.MySQL数据库 mysql_num_rows() mysql_affected_rows() 这两个函数都作用于 mysql_query($query)操作的结果,mysql_num_rows( ...

  3. wpf linq数据库无法插入

    最近做wpf应用程序,遇到一个很奇怪的问题,我用代码往数据库里插入数据成功了,但去vs的服务器资源管理器里查看数据库总是最开始的样子,什么都没有插入进去,然后就检查代码,打日志查看sql语句,发现都没 ...

  4. wpf C# 数据库 c/s 个人信息管理 wpf局域网通信

    系统功能基本要求 wpf局域网通信 WPF跨线程访问线程安全的数据如解决该类型的CollectionView不支持从调度程序线程以外的线程对其SourceCollection 读取信息null 读取发 ...

  5. Python 经典面试题汇总之数据库篇

    数据库和缓存 1.列举常见的关系型数据库和非关系型都有那些? 关系型数据库(需要有表结构) mysql.oracle.splserver.postgresql.db2.sybase 非关系型数据库(是 ...

  6. 面试题:oracle数据库行转列的问题

    今天我一个学弟问了一个面试题: 有表A,结构如下:A: p_ID p_Num s_id1 10 011 12 022 8 013 11 013 8 03其中:p_ID为产品ID,p_Num为产品库存量 ...

  7. 8月份21道最新Java面试题剖析(数据库+JVM+微服务+高并发)

    前言 纵观几年来的Java面试题,你会发现每家都差不多.你仔细观察就会发现,HashMap的出现几率未免也太高了吧!连考察的知识点都一样,什么hash碰撞啊,并发问题啊!再比如JVM,无外乎考内存结构 ...

  8. python面试题七: mysql数据库

    ---------------------------------------------------------------------------------------------------- ...

  9. WPF——绑定数据库数据(Listview)

    一.首先先画一个窗体,放进一个Listview 然后给每列起好名字,并且绑定的数据是临时表的列名 二.造一个临时表用来存储数据,并且将扔进去的Listview绑定到这个临时表DataTable上面 p ...

随机推荐

  1. H5如何实现唤起APP

    前言 写过hybrid的同学,想必都会遇到这样的需求,如果用户安装了自己的APP,就打开APP或跳转到APP内某个页面,如果没安装则引导用户到对应页面或应用商店下载.这里就涉及到了H5与Native之 ...

  2. Map和WeakMap的方法和区别

    Map Map是一组键值对的结构,具有极快的查找速度. 一.构造函数不同 let map = new Map(); let weakmap = new WeakMap(); 二.内置函数不同 Map的 ...

  3. quasar + uni-app混合打包APP

    写几个关键点,作为备忘录. 和所有框架一样,现在本地run build quasar的cli是 quasar build 然后记住打包好以后的静态文件 目录 uni-app新建一个5+App的默认模板 ...

  4. Dubbo3 源码系列 -- 环境准备

    Dubbo3 源码系列 -- 环境准备 前言 工作中一直使用Dubbo项目,借着这次机会通过源码的方式来学习下Dubbo的源码内容.目前市面上很多都是的Dubbo2系列的教程:就连目前的Dubbo的官 ...

  5. React简单教程-4-事件和hook

    前言 在上一章 React 简单教程-3-样式 中我们建立了一个子组件,并稍微美化了一下.在另一篇文章 React 简单教程-3.1-样式之使用 tailwindcss 章我们使用了 tailwind ...

  6. django框架9

    内容概要 用户名动态校验 删除二次确认 sweetalert前端插件 django自带的序列化组件 批量数据操作 分页器推导流程 自定义分页器封装代码 自定义分页器使用方法 校验性组件之forms组件 ...

  7. MySQL数据库3

    内容概要 自增特性 约束条件之外键 外键简介 外键关系 外键SQL语句之一对多关系 外键SQL语句之多对多关系 外键SQL语句之一对一关系 查询关键字 数据准备 查询关键字之select与from 查 ...

  8. Anaconda新建虚拟环境并添加到Jupyter Notebook

    可参考:https://www.jianshu.com/p/ab9ae548b253 虚拟环境是Python的隔离工作副本.这意味着每个环境都可以具有自己的依赖关系,甚至可以具有自己的Python版本 ...

  9. TDSQL|三篇论文入选国际顶会SIGMOD,厉害了腾讯云数据库

    好消息!6月13日,腾讯云数据库三篇论文再次入选数据库行业顶会SIGMOD,被SIGMOD 2022 Research Full Paper(研究类长文)收录. 本次被收录的研究成果中,新型数据结构设 ...

  10. 开发工具-Unix时间戳转换

    更新日志 2022年6月10日 初始化链接. https://toolb.cn/timestamp