近期碰到的一些面试题--WPF、C#、数据库
最近想换工作的念头特别强烈,面了几家公司没有拿到满意的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#、数据库的更多相关文章
- 云时代架构阅读笔记十五——之前碰到的Java面试题
1.一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致. 2.Java有 ...
- php面试题之五——MySQL数据库(基础部分)
五.MySQL数据库 mysql_num_rows() mysql_affected_rows() 这两个函数都作用于 mysql_query($query)操作的结果,mysql_num_rows( ...
- wpf linq数据库无法插入
最近做wpf应用程序,遇到一个很奇怪的问题,我用代码往数据库里插入数据成功了,但去vs的服务器资源管理器里查看数据库总是最开始的样子,什么都没有插入进去,然后就检查代码,打日志查看sql语句,发现都没 ...
- wpf C# 数据库 c/s 个人信息管理 wpf局域网通信
系统功能基本要求 wpf局域网通信 WPF跨线程访问线程安全的数据如解决该类型的CollectionView不支持从调度程序线程以外的线程对其SourceCollection 读取信息null 读取发 ...
- Python 经典面试题汇总之数据库篇
数据库和缓存 1.列举常见的关系型数据库和非关系型都有那些? 关系型数据库(需要有表结构) mysql.oracle.splserver.postgresql.db2.sybase 非关系型数据库(是 ...
- 面试题:oracle数据库行转列的问题
今天我一个学弟问了一个面试题: 有表A,结构如下:A: p_ID p_Num s_id1 10 011 12 022 8 013 11 013 8 03其中:p_ID为产品ID,p_Num为产品库存量 ...
- 8月份21道最新Java面试题剖析(数据库+JVM+微服务+高并发)
前言 纵观几年来的Java面试题,你会发现每家都差不多.你仔细观察就会发现,HashMap的出现几率未免也太高了吧!连考察的知识点都一样,什么hash碰撞啊,并发问题啊!再比如JVM,无外乎考内存结构 ...
- python面试题七: mysql数据库
---------------------------------------------------------------------------------------------------- ...
- WPF——绑定数据库数据(Listview)
一.首先先画一个窗体,放进一个Listview 然后给每列起好名字,并且绑定的数据是临时表的列名 二.造一个临时表用来存储数据,并且将扔进去的Listview绑定到这个临时表DataTable上面 p ...
随机推荐
- docker:registry
存放docker镜像(mage)的地址,可供人上传下载镜像包: 下载 docker search whalesay --搜索whalesay镜像,该镜像用命令行的形式画了个鲸鱼并说了句话 docker ...
- java.sql和javax.sql的区别
根据 JDBC 规范,javax.sql 包中的类和接口首先作为 JDBC 2.0 可选包提供.此可选程序包以前与 J2SE1.2 中的 java.sql 程序包是分开的.从 J2SE1.4 开始,这 ...
- SSO 方案演进
背景介绍 随着业务与技术的发展,现今比以往任何时候都更需要单点登录 SSO 身份验证. 现在几乎每个网站都需要某种形式的身份验证才能访问其功能和内容. 随着网站和服务数量的增加,集中登录系统已成为一种 ...
- 标注工具doccano导出数据为空的解决办法
地址:https://github.com/taishan1994/doccano_export doccano_export 使用doccano标注工具同时导出实体和关系数据为空的解决办法.docc ...
- 配置中心Nacos(服务发现)
服务演变之路 单体应用架构 在刚开始的时候,企业的用户量.数据量规模都⽐较⼩,项⽬所有的功能模块都放在⼀个⼯程中编码.编译.打包并且部署在⼀个Tomcat容器中的架构模式就是单体应用架构,这样的架构既 ...
- Go中rune类型浅析
一.字符串简单遍历操作 在很多语言中,字符串都是不可变类型,golang也是. 1.访问字符串字符 如下代码,可以实现访问字符串的单个字符和单个字节 package main import ( &qu ...
- Public Round #1
传送门 [PR #1]删数 题意:写的很清楚了,略 思路: 首先转化为差分数组,两个连续数相同,删掉,乘二放进去. 发现能互相转化的两个数,符号,值\(/lowbit\)都一样. 把能相互转化的数归为 ...
- Abp Vnext源码解析系列文章01---EventBus
一.简介 BP vNext 封装了两种事件总线结构,第一种是 ABP vNext 自己实现的本地事件总线,这种事件总线无法跨项目发布和订阅.第二种则是分布式事件总线,ABP vNext 自己封装了一个 ...
- SQL中把汉字转换拼音码
思路:在SQL中创建一个函数fn_GetPy(),函数的输入参数是一个汉字字符串,返回值是拼音码字符串. 创建函数语句: CREATE function fn_GetPy(@str nvarchar( ...
- 【摸鱼神器】UI库秒变LowCode工具——列表篇(一)设计与实现
内容摘要: 需求分析 定义 interface 定义 json 文件 定义列表控件的 props 基于 el-table 封装,实现依赖 json 渲染 实现内置功能:选择行(单选.多选),格式化.锁 ...