(记录一下自己面试中被问到的问题和自己整理的回答,这篇是与技术相关的)
一个最常问的问题就是数据库
-
你接触过几种数据库?
说说自己接触到的数据库,我最熟悉的是MySql和Sql Sever,MongoDB用的比较少。 -
某个项目是用什么的数据库?
说说自己项目用的是什么数据库就行。 -
你是怎么与数据库建立连接的?
这个几乎是一定会问的问题,就算技术一般或者对之前写过的项目不熟悉也要把这方面复习清楚了。如果是使用 ADO. NET来连接数据库,需要创建一个数据库连接,设置连接字符串,指定数据库的服务器名称,数据库名称,使用数据库用户名和密码或者使用身份验证来连接,以及数据库的连接超时时间。然后,可以使用 SqlCommand 来执行 SQL 语句,使用 SqlDataReader 来读取数据,使用 SqlDataAdapter 来填充 DataSet 和 DataTable,以及使用 SqlTransaction 来实现数据库事务处理。示例代码:使用身份验证连接
string connString = "Data Source=服务器名称;Initial Catalog=SQL Server中目标数据库名;Integrated Security=True";
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
// 在此处添加代码执行查询或存储过程
conn.Close();
}
使用账号密码来连接
string connString = "server=服务器名称;database=SQL Server中目标数据库名;" +
"uid=登录名;pwd=密码;";
- 描述一下数据库内连接和外连接
内连接(inner join)
①隐式的内连接,没有INNER JOIN,形成的中间表为两个表的笛卡尔积。
例:SELECT student.name,score.codeFROM student,score WHERE score.code=student.code;
② 显示的内连接,一般称为内连接,有INNER JOIN,形成的中间表为两个表经过ON条件过滤后的笛卡尔积。
例:SELECT student.name,score.codeFROM student INNER JOIN score ON score.code=student.code;
①左外连接(left outer join):返回指定左表的全部行+右表对应的行,如果左表中数据在右表中没有与其相匹配的行,则在查询结果集中显示为空值。
例:SELECT student.name,score.codeFROM student LEFT JOIN score ON score.code=student.code;
②右外连接(right outer join):与左外连接类似,是左外连接的反向连接。
例:SELECT student.name,score.codeFROM student RIGHT JOIN score ON score.code=student.code;
- sql语句
添加、删除等常用sql语句也会被问到,这些一般都是需要掌握的基础。
(1)插入
string sqlStr= "insert into songList(name,num,times,description) values(@Name,@Number,@Times,@Description)";
(2)查找
string sqlStr = "select * from userInfo1 where userphone='" + userphone + "'";
(3)替换
string sqlStr = "Update songList Set num=@Number,times=@Times, description=@Description where name=@Name ";
(4)删除
string sqlStr = "Delete from songList where name='" + Name + "' and times='"+Times+"'";
C#常问的基础知识问题
-
C#语言用的几点几的版本
第一次被问到这个的时候我一脸懵逼,我只知道我用的Framework框架是4.7.2,我查了一下对应的C#语言是7.3版本的。 -
C#中的主类是什么
C#中所有的类都直接或者间接地继承Object类 -
面向对象访问权限都有哪几种
public 、private 、internal(内部) 、protected、 protected internal -
类和结构体的区别
结构体是一种值类型,而类是引用类型。值类型用于存储数据的值,引用类型用于存储对实际数据的引用,类则可以被实例化,通过引用来对实际数据操作。 结构体使用栈存储(Stack Allocation),而类使用堆存储(Heap Allocation) -
属性和字段的区别
字段是从数据库角度的名字,也可以称为属性,属性是从面向对象角度的名字。属性与字段是对同一个元素不同的称呼。
字段定义:⽤于存储类和类的实例相关数据的变量。属性定义:是⼀个代表类的实例或类中的⼀个数据项的函数成员。 -
LIST存储空间不够怎么办,是什么机制?
这个问题我暂时还没解决。先了解一下list和数组的区别:
(1)数组存储的缺点:
长度开始必须执行,而且一旦指定,无法修改,保存的必须为同一类型的元素,使用数组进行增加/删除操作比较麻烦。
(2)集合的优点:
可以动态保存多个对象,使用方便,提供了一系列方便的操作对象的方法,如add、remove、set、get等,使用集合增加/删除较方便 。 -
委托和事件的区别和优缺点
事件是一种特殊形式的委托,,增加了add和remove方法。他规定了只有产生者的内部才可以调用。
还有一些关于操作系统和计算机网络相关的必备知识
- 简述一下http协议
HTTP协议:
HTTP协议(超文本传输协议)是一种网络通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。默认端口:80
HTTPS协议:
HTTPS协议是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。默认端口:443
- 进程和线程的区别
(1)进程:进程是程序在计算机上的一次执行活动,即正在运行中的应用程序,通常称为进程。当你运行一个程序,你就启动了一个进程。
每个进程都有自己独立的地址空间(内存空间),每当用户启动一个进程时,操作系统就会为该进程分配一个独立的内存空间,让应用程序在这个独立的内存空间中运行。
在同一个时间里,同一个计算机系统中如果允许两个或两个以上的进程处于运行状态,这便是多进程,也称多任务。现代的操作系统几乎都是多任务操作系统,能够同时管理多个进程的运行。
(2)线程:线程是一个轻量级的子进程,是最小的处理单元;是一个单独的执行路径。可以说:线程是进程的子集(部分),一个进程可能由多个线程组成。
线程是独立的。如果在一个线程中发生异常,则不会影响其他线程。它使用共享内存区域。
多线程是一种执行模型,它允许多个线程存在于进程的上下文中,以便它们独立执行但共享其进程资源。
(目前就大概更新到这里了,问题都比较简单,可能也跟我很菜有关系)