您当前的位置:首页 > 计算机 > 编程开发 > .net

某医疗公司面试题c#岗

时间:04-18来源:作者:点击数:
  1. c#和.net的区别
    .NET是框架平台,而C#是语言。但是,因为C#语言是和.NET一起使用的,所以如果要使用C#高效地开发应用程序,理解Framework就非常重要。
  2. 什么是事务?什么是锁?
    a. 事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。
    b. 为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过ACID测试,即原子性,一致性,隔离性和持久性。
    c. 锁:在所以的DBMS中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的
  3. 什么是GC?它的优缺点?
    在Java中,对象所占用的内存在对象不再使用后会自动被回收。这些工作是由一个叫垃圾回收器 Garbage Collector 的进程完成的。
    好处是:开发者无需过问内存管理,可以专注于解决实际问题。虽然内存泄露仍有可能会发生,但发生的概率比较小。GC的智能算法可以在后台自动的进行内存管理,且这种管理在大多数时候是最佳的。
    坏处是:当垃圾回收发生时,它会影响程序的性能,甚至会暂停程序的执行。这个被称为“Stop the world”垃圾回收机制,整个程序进程会被暂停以等待垃圾回收执行完。对某些应用而言,这可能是无法接受的。
    开发者并不能指定何时或使用何种方法执行GC。
  4. 什么是重载?什么是覆盖?
    重载方法:在Java中,有函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。
    覆盖方法:覆盖又称重写,在Java中,是子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想做一定的修改,这就需要采用方法的重写。
  5. 什么是sql注入?怎么防范?
    所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终bai达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.
    防护
    (1)永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和双"-"进行转换等。
    (2)永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
    (3)永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
    (4)不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
    (5)应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装
    (6)sql注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用sql注入检测工具jsky,网站平台就有亿思网站安全平台检测工具。MDCSOFT SCAN等。采用MDCSOFT-IPS可以有效的防御SQL注入,XSS攻击等。
  6. group by 和 order by的区别?
    (1)order by 从英文里理解就是行的排序方式,默认的为升序。 order by 后面必dao须列出排序的字段名,可以是多个字段名。
    (2)group by 从英文里理解就是分组。必须有“聚合函数”shu配合才能使用,使用时至少需要一个分组标志字段。
    注意:聚合函数是—sum()、count()、avg()等都是“聚合函数”
    (3)在sql命令格式使用的先后顺序上,group by 先于 order by。在Sql中也可以说order by是按字段排序,group by 是按字段分类
    通常order by 和group by 没有太多的关系,但是它们常常组合在一起用,完成分组加排序的功能。
  7. drop、turncat和delete的区别?
    drop 直接删掉表, truncate 删除表中数据,再插入时自增长 id 又从 1 开始 delete删除表中数据,可以加 where 字句。
    (1) DELETE 语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。TRUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。
    (2) 表和索引所占空间。当表被 TRUNCATE 后,这个表和索引所占用的空间会恢复到初始大小,而 DELETE 操作不会减少表或索引所占用的空间。drop 语句将表所占用的空间全释放掉。
    (3) 一般而言,drop > truncate > delete
    (4) 应用范围。TRUNCATE 只能对 TABLE;DELETE 可以是 table 和 view
    (5) TRUNCATE 和 DELETE 只删除数据,而 DROP 则删除整个表(结构和数据)。
    (6) truncate 与不带 where 的 delete :只删除数据,而不删除表的结构(定
    义)drop 语句将删除表的结构被依赖的约束(constrain),触发器(trigger)索引
    (index);依赖于该表的存储过程/函数将被保留,但其状态会变为:invalid。 (7)delete 语句为 DML(data maintain Language),这个操作会被放到 rollback segment 中,事务提交后才生效。如果有相应的 tigger,执行的时候将被触发。
    (8) truncate、drop 是 DLL(data define language),操作立即生效,原数据不放到 rollback segment 中,不能回滚
    (9) 在没有备份情况下,谨慎使用 drop 与 truncate。要删除部分数据行采
    用 delete 且注意结合 where 来约束影响范围。回滚段要足够大。要删除表用 drop;若想保留表而将表中数据删除,如果于事务无关,用 truncate 即可实现。如果和事务有关,或老师想触发 trigger,还是用 delete。
    (10) Truncate table 表名 速度快,而且效率高,因为: truncate table 在功能上
    与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但
    TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。
    DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。
    TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
    (11) TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。
    (12) 对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。
  8. MySQL、SqlServer、mongodb和redis的优缺点?
    (1)MySQL
    优点:体积小、速度快、总体拥有成本低,开源;支持多种操作系统;是开源数据库,提供的接口支持多种语言连接操作 ;MySQL的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源。用多线程和C语言实现的mysql能很容易充分利用CPU;MySql有一个非常灵活而且安全的权限和口令系统。当客户与MySql服务器连接时,他们之间所有的口令传送被加密,而且MySql支持主机认证;支持ODBC for Windows, 支持所有的ODBC 2.5函数和其他许多函数, 可以用Access连接MySql服务器, 使得应用被扩展;支持大型的数据库, 可以方便地支持上千万条记录的数据库。作为一个开放源代码的数据库,可以针对不同的应用进行相应的修改;拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性;MySQL同时提供高度多样性,能够提供很多不同的使用者介面,包括命令行客户端操作,网页浏览器,以及各式各样的程序语言介面,例如C+,Perl,Java,PHP,以及Python。你可以使用事先包装好的客户端,或者干脆自己写一个合适的应用程序。MySQL可用于Unix,Windows,以及OS/2等平台,因此它可以用在个人电脑或者是服务器上。
    缺点:不支持热备份;MySQL最大的缺点是其安全系统,主要是复杂而非标准,另外只有到调用mysqladmin来重读用户权限时才发生改变;没有一种存储过程(Stored Procedure)语言,这是对习惯于企业级数据库的程序员的最大限制;MySQL的价格随平台和安装方式变化。Linux的MySQL如果由用户自己或系统管理员而不是第三方安装则是免费的,第三方案则必须付许可费。Unix或linux 自行安装 免费 、Unix或Linux 第三方安装 收费。
    (2)SqlServer
    优点:易用性、适合分布式组织的可伸缩性、用于决策支持的数据仓库功能、与许多其他服务器软件紧密关联的集成性、良好的性价比等;为数据管理与分析带来了灵活性,允许单位在快速变化的环境中从容响应,从而获得竞争优势。从数据管理和分析角度看,将原始数据转化为商业智能和充分利用Web带来的机会非常重要。作为一个完备的数据库和数据分析包,SQLServer为快速开发新一代企业级商业应用程序、为企业赢得核心竞争优势打开了胜利之门。作为重要的基准测试可伸缩性和速度奖的记录保持者,SQLServer是一个具备完全Web支持的数据库产品,提供了对可扩展标记语言 (XML)的核心支持以及在Internet上和防火墙外进行查询的能力;
    缺点:
    开放性 :SQL Server 只能windows上运行没有丝毫开放性操作系统系统稳定对数据库十分重要Windows9X系列产品偏重于桌面应用NT server只适合小型企业而且windows平台靠性安全性和伸缩性非常有限象unix样久经考验尤其处理大数据库。伸缩性并行性 :SQL server 并行实施和共存模型并成熟难处理日益增多用户数和数据卷伸缩性有限。安全性:没有获得任何安全证书。性能 :SQL Server 多用户时性能佳 。客户端支持及应用模式: 客户端支持及应用模式。只支持C/S模式,SQL Server C/S结构只支持windows客户用ADO、DAO、OLEDB、ODBC连接。
    使用风险:SQL server 完全重写代码经历了长期测试断延迟许多功能需要时间来证明并十分兼容。
    (3)Oracle
    优点:开放性:Oracle 能所有主流平台上运行(包括 windows)完全支持所有工业标准采用完全开放策略使客户选择适合解决方案对开发商全力支持。可伸缩性,并行性:oracle 并行服务器通过使组结点共享同簇工作来扩展windownt能力提供高用性和高伸缩性簇解决方案windowsNT能满足需要用户把数据库移UNIXOracle并行服务器对各种UNIX平台集群机制都有着相当高集成度。安全性:获得最高认证级别的ISO标准认证。性能:Oracle 性能高 保持开放平台下TPC-D和TPC-C世界记录。客户端支持及应用模式:Oracle 多层次网络计算支持多种工业标准用ODBC、JDBC、OCI等网络客户连接 。
    使用风险:Oracle 长时间开发经验完全向下兼容得广泛应用地风险低。
    缺点:对硬件的要求很高;价格比较昂贵;管理维护麻烦一些;操作比较复杂,需要技术含量较高。
  9. 数据库有哪些聚合函数?
    在这里插入图片描述
  10. 软件开发有哪些过程?每个过程有哪些作用?
    软件开发一般分为五个阶段
    (1)软件的前期规划 此阶段是软件开发与需求放共同讨论,主要确定软件的开发目标及其可行性。
    (2)需求分析阶段 该阶段完成软件需求规格说明经审定和批准后将作为整个软件开发工作的基础列入管理的基线,在本阶段将不确定性的软件需求(主要是功能)明确化。能给本公司开发的软件的“需求基线”确定提供一个讨论、进一步完善的基础。在本阶段,由产品经理负责,其他人员配合,编写产品规格说明书,此说明书面向最终用户和领导,主要描绘产品的形状以及功能、性能、功能特性、性能特性。由项目经理负责编写系统技术方案书,描述公司初次使用的技术的详细解决方案。
    (3)系统编程阶段 根据软件需求规格说明建立软件总体结构和模块间的关系,确定各模块功能,定义各功能模块的接口,设计全局数据库和数据结构;然后进行细节的编程。 
    (4)测试阶段 测试阶段是软件不可少的阶段,按详细设计的结构,伟创软件针对用户方体验,根据软件单元测试计划,依照将经过单元测试的底层程序单元逐步组装成子项目直到开发项目的过程,对软件进行测试。  
    (5)验收阶段 对完成中试的软件进行检查、审查和评审,确定软件是否达到了软件任务书的要求。验收通过的软件可以向软件交办单位交付。
  11. 什么是函数触发器?它的作用有哪些?
    a.触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。
    b.它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。
    c.可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发
  12. datareader和dataset的区别?
    DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection,在线操作数据库…任何对SqlConnection的操作都会引发DataReader的异常…因为DataReader每次只在内存中加载一条数据,所以占用的内存是很小的…因为DataReader的特殊性和高性能.所以DataReader是只进的…你读了第一条后就不能再去读取第一条了…
    DataSet则是将数据一次性加载在内存中.抛弃数据库连接…读取完毕即放弃数据库连接…因为DataSet将数据全部加载在内存中.所以比较消耗内存…但是确比DataReader要灵活…可以动态的添加行,列,数据.对数据库进行回传更新操作…
  13. 数据库的索引是什么?缺点是什么?
    数据库索引 ,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用 B 树及其变种 B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。
    这种数据结构,就是索引。
    为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。
  14. string str=" “和string str=null有什么区别?
    (1)String str=null,这句话的意思就是定义一个字符串,变量str,字符串的内容为空值。
    (2)String str=“” ,定义一个String类型的变量str,并为其赋值。
    String str=null与String str=“”区别
    (3)”“分配了内存;null没有分配内存。
    (4)”“是一个字符串(String).它在内存中是存在的.而null它是一个空对象.在内存中是不存在的。
    (5)”"占内存,在内存中会分配一个空间。null不占内存. 为空引用.
  15. web请求方式有哪些?
    在这里插入图片描述
  16. private、protected、public和default区别
    在这里插入图片描述
    (1)public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。
    (2)private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
    (3)protect: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。
    (4)default:即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访问。
  17. sleep()和wait()的区别
    对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。
    sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门