首页数据库数据库工程师面试题?数据库工程师真题

数据库工程师面试题?数据库工程师真题

编程之家2026-05-19863次浏览

这篇文章给大家聊聊关于数据库工程师面试题,以及数据库工程师真题对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

数据库工程师面试题?数据库工程师真题

关于网络工程师的面试题有哪些

网络工程师能够从事计算机信息系统的设计、建设、运行和维护工作。下面是我为你整理的网络工程师面试题,希望对你有所帮助!

1、用户名与口令被破解

攻击原理:用户名与口令,往往是黑客们最感兴趣的东西,如果被通过某种方式看到源代码,后果是严重的。

防范技巧:涉及用户名与口令的程序最好封装在服务器端,尽量少在ASP文件里出现,涉及与数据库连接的用户名与口令应给予最小的权限。出现次数多的用户名与口令可以写在一个位置比较隐蔽的包含文件中。如果涉及与数据库连接,在理想状态下只给它以执行存储过程的权限,千万不要直接给予该用户修改、插入、删除记录的权限。

2、验证被绕过

攻击原理:现在需要经过验证的ASP程序大多是在页面头部加一个判断语句,但这还不够,有可能被黑客绕过验证直接进入。

数据库工程师面试题?数据库工程师真题

防范技巧:需要经过验证的ASP页面,可跟踪上一个页面的文件名,只有从上一页面转进来的会话才能读取这个页面。

3、inc文件泄露问题

攻击原理:当存在ASP的主页正在制作且没有进行最后调试完成以前,可以被某些搜索引擎机动追加为搜索对象。如果这时候有人利用搜索引擎对这些网页进行查找,会得到有关文件的定位,并能在浏览器中查看到数据库地点和结构的细节,并以此揭示完整的源代码。

防范技巧:程序员应该在网页发布前对它进行彻底的调试;安全专家则需要加固ASP文件以便外部的用户不能看到它们。首先对.inc文件内容进行加密,其次也可以使用.asp文件代替.inc文件使用户无法从浏览器直接观看文件的源代码。inc文件的文件名不要使用系统默认的或者有特殊含义容易被用户猜测到的名称,尽量使用无规则的英文字母。

4、自动备份被下载

攻击原理:在有些编辑ASP程序的工具中,当创建或者修改一个ASP文件时,编辑器自动创建一个备份文件,比如:UltraEdit就会备份一个.bak文件,如你创建或者修改了some.asp,编辑器会自动生成一个叫 some.asp.bak文件,如果你没有删除这个bak文件,攻击者可以直接下载some.asp.bak文件,这样some.asp的源程序就会被下载。

数据库工程师面试题?数据库工程师真题

防范技巧:上传程序之前要仔细检查,删除不必要的文档。对以BAK为后缀的文件要特别小心。

5、特殊字符

攻击原理:输入框是黑客利用的一个目标,他们可以通过输入脚本语言等对用户客户端造成损坏;如果该输入框涉及数据查询,他们会利用特殊查询语句,得到更多的数据库数据,甚至表的全部。因此必须对输入框进行过滤。但如果为了提高效率仅在客户端进行输入合法性检查,仍有可能被绕过。

防范技巧:在处理类似留言板、BBS等输入框的ASP程序中,最好屏蔽掉HTML、JavaScript、VBScript语句,如无特殊要求,可以限定只允许输入字母与数字,屏蔽掉特殊字符。同时对输入字符的长度进行限制。而且不但要在客户端进行输入合法性检查,同时要在服务器端程序中进行类似检查。

6、数据库下载漏洞

攻击原理:在用Access做后台数据库时,如果有人通过各种方法知道或者猜到了服务器的Access数据库的路径和数据库名称,那么他也能够下载这个Access数据库文件,这是非常危险的。

防范技巧:

(1)为你的数据库文件名称起个复杂的非常规的名字,并把它放在几层目录下。所谓“非常规”,打个比方说,比如有个数据库要保存的是有关书籍的信息,可不要给它起个“book.mdb”的名字,而要起个怪怪的名称,比如d34ksfslf.mdb,并把它放在如./kdslf/i44/studi/的几层目录下,这样黑客要想通过猜的方式得到你的Access数据库文件就难上加难了。

(2)不要把数据库名写在程序中。有些人喜欢把DSN写在程序中,比如:

DBPath= Server.MapPath(“cmddb.mdb”)

conn.Open“driver={Microsoft Access Driver(*.mdb)};dbq=”& DBPath

假如万一给人拿到了源程序,你的Access数据库的名字就一览无余了。因此建议你在ODBC里设置数据源,再在程序中这样写:

conn.open“shujiyuan”

(3)使用Access来为数据库文件编码及加密。首先在“工具→安全→加密/解密数据库”中选取数据库(如:employer.mdb),然后按确定,接着会出现“数据库加密后另存为”的窗口,可存为:“employer1.mdb”。

要注意的是,以上的动作并不是对数据库设置密码,而只是对数据库文件加以编码,目的是为了防止他人使用别的工具来查看数据库文件的内容。

接下来我们为数据库加密,首先打开经过编码了的 employer1.mdb,在打开时,选择“独占”方式。然后选取功能表的“工具→安全→设置数据库密码”,接着输入密码即可。这样即使他人得到了 employer1.mdb文件,没有密码他也是无法看到 employer1.mdb中的内容。

7、防范远程注入攻击

这类攻击在以前应该是比较常见的攻击方式,比如POST攻击,攻击者可以随便的改变要提交的数据值已达到攻击目的.又如:COOKIES的伪造,这一点更值得引起程序编写者或站长的注意,不要使用COOKIES来做为用户验证的方式,否则你和把钥匙留给贼是同一个道理.

比如:

If trim(Request. cookies(“uname”))=”fqy” and Request.cookies(“upwd”)=”fqy#e3i5.com” then

……..more………

End if

我想各位站长或者是喜好写程序的朋友千万别出这类错误,真的是不可饶恕.伪造COOKIES都多少年了,你还用这样的就不能怪别人跑你的密码.涉及到用户密码或者是用户登陆时,你最好使用session它才是最安全的.如果要使用COOKIES就在你的COOKIES上多加一个信息,SessionID,它的随机值是64位的,要猜解它,不可能.例:

if not(rs.BOF or rs.eof) then

login=”true”

Session(“username”&sessionID)= Username

Session(“password”& sessionID)= Password

‘Response.cookies(“username”)= Username

‘Response.cookies(“Password”)= Password

下面我们来谈谈如何防范远程注入攻击,一般的攻击都是将单表提交文件拖到本地,将Form ACTION=”chk.asp”指向你服务器中处理数据的文件即可.如果你全部的数据过滤都在单表页上,那么恭喜你,你将已经被脚本攻击了.

怎么才能制止这样的远程攻击?好办,请看代码如下:程序体(9)

‘个人感觉上面的代码过滤不是很好,有一些外部提交竟然还能堂堂正正的进来,于是再写一个.

‘这个是过滤效果很好,建议使用.

if instr(request.servervariables(“http_referer”),”(“host”))<1 then response.write“处理 URL时服务器上出错。

如果您是在用任何手段攻击服务器,那你应该庆幸,你的所有操作已经被服务器记录,我们会第一时间通知公安局与国家安全部门来调查你的IP.”

response.end

end if

程序体(9)

本以为这样就万事大吉了,在表格页上加一些限制,比如maxlength啦,等等..但天公就是那么不作美,你越怕什么他越来什么.你别忘了,攻击者可以突破sql注入攻击时输入框长度的限制.写一个SOCKET程序改变HTTP_REFERER?我不会。网上发表了这样一篇文章:

————len.reg—————–

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\扩展(&E)]

@=”C:\Documents and Settings\Administrator\桌面\len.htm”

“contexts”=dword:00000004

———–end———————-

———–len.htm——————

———-end———————–

用法:先把len.reg导入注册表(注意文件路径)

然后把len.htm拷到注册表中指定的地方.

打开网页,光标放在要改变长度的输入框上点右键,看多了一个叫扩展的选项了吧

单击搞定!后记:同样的也就可以对付那些限制输入内容的脚本了.

怎么办?我们的限制被饶过了,所有的努力都白费了?不,举起你de键盘,说不。让我们继续回到脚本字符的过滤吧,他们所进行的注入无非就是进行脚本攻击。我们把所有的精力全都用到ACTION以后的页面吧,在chk.asp页中,我们将非法的字符全部过滤掉,结果如何?我们只在前面虚晃一枪,叫他们去改注册表吧,当他们改完才会发现,他们所做的都是那么的徒劳。

8、ASP木马

已经讲到这里了,再提醒各位论坛站长一句,小心你们的文件上传:为什么论坛程序被攻破后主机也随之被攻击者占据。原因就在……对!ASP木马!一个绝对可恶的东西。病毒么?非也.把个文件随便放到你论坛的程序中,您老找去吧。不吐血才怪哦。如何才能防止ASP木马被上传到服务器呢?方法很简单,如果你的论坛支持文件上传,请设定好你要上传的文件格式,我不赞成使用可更改的文件格式,直接从程序上锁定,只有图象文件格式,和压缩文件就完全可以,多给自己留点方便也就多给攻击者留点方便。怎么判断格式,我这里收集了一个,也改出了一个,大家可以看一下:

程序体(10)

‘判断文件类型是否合格

Private Function CheckFileExt(fileEXT)

dim Forumupload

Forumupload=”gif,jpg,bmp,jpeg”

Forumupload=split(Forumupload,”,”)

for i=0 to ubound(Forumupload)

if lcase(fileEXT)=lcase(trim(Forumupload(i))) then

CheckFileExt=true

exit Function

else

CheckFileExt=false

end if

next

End Function

‘验证文件内容的合法性

set MyFile= server.CreateObject(“Scripting.FileSystemObject”)

set MyText= MyFile.OpenTextFile(sFile, 1)‘读取文本文件

sTextAll= lcase(MyText.ReadAll): MyText.close

‘判断用户文件中的危险操作

sStr=”8.getfolder.createfolder.deletefolder.createdirectory

.deletedirectory”

sStr= sStr&“.saveas wscript.shell script.encode”

sNoString= split(sStr,””)

for i= 1 to sNoString(0)

if instr(sTextAll, sNoString(i))<> 0 then

sFile= Upl.Path& sFileSave: fs.DeleteFile sFile

Response.write“

”& sFileSave&”文件中含有与操作目录等有关的命令”&_

”& mid(sNoString(i),2)&”,为了安全原因,不能上传。”&_”

Response.end

end if

next

程序体(10)

2021年大数据工程师面试内容包括哪些

【导语】近年来,大数据发展如火如荼,很多人都选择学习大数据专业或者转行大数据,大数据里又包含很多就业岗位,所以在进行岗位选择的时候,还是需要大家合理选择,为了帮助大家更好的进入大数据行业执业,下面就把2021年大数据工程师面试内容给大家进行一下具体介绍。

1、自我介绍

一般上来就是自我介绍,谈下工作经历和项目经验,面试官会根据你的项目经验对你进行技术面试。在自我介绍时,一定要抓住核心说,不要太啰嗦,尽量放大自己的价值,让面试官感受到你对工作的热情,以及以后对公司贡献的能力。

2、数仓开发知识技能

(1)Java是必问的,不过问的不深,把Javase部分吃透,足以应付Java部分的面试。

(2)Hadoop生态,Yarn、Zookeeper、HDFS这些底层原理要懂,面试经常被问。

(3)Mapreduce的shuffle过程这个也是面试被常问的。

(4)Hbase和HIve,搞大数据这些不懂真的说不过去。

(5)Mysql、Oracle和Postgres数据库操作要回,Sql要会写。

(6)linux操作系统,这个简单得命令必须要懂,会写shell脚本更好了。

(7)Kettle或Sqoop这种数据处理工具至少要会一个。8,数据仓库建模、数据模型的问题。

3、技术方面知识技能

(1)SparkSql和SparkStreaming,底层原理、内核、提交任务的过程等等,尽量深入内幕,这个经常会跟MapReduce作比较的。当然也要了解Storm和Flink,Flink这个建议要学会,以后用处会越来越广。

(2)Redis、Kafka、ElasticSearch这些都得懂原理,深入了解,会使用,会操作,会调优。

(3)impala和kylin这些尽量也要了解会用

(4)Python这个要是有能力,有精力,建议也要往深处学习,我目前正在自学中。

(5)集群的问题,包括一些简单的运维知识。

(6)大数据数据倾斜的问题,包括Spark JVM内存调优问题等等。

关于2021年大数据工程师面试内容,就给大家介绍到这里了,希望对大家能有所帮助,当然进入大数据行业,还需要大家在平时不断进行技能提升,这样才能更好的拥有一席之地。

好心人 提供一份用友net软件工程师的笔试、面试题

用友笔试题目NET面试题专栏(部分)

用友,笔试, NET,专栏,题目

1、面向对象的语言具有___封装__性、___继承__性、___多态_性。

2、能用foreach遍历访问的对象需要实现 __ IEnumerable __接口或声明__GetEnumerator __方法的类型。

3、以下叙述正确的是:

A.接口中可以有虚方法。 B.一个类可以实现多个接口。

C.接口不能被实例化。 D.接口中可以包含已实现的方法。

4、简述 private、 protected、 public、 internal修饰符的访问权限。

Private私有成员:只有本类内部可以访问

Protected受保护成员:只有本类和本类的子类可以访问

Public公有成员:完全公开,没有访问限制

Internal:在同一命名空间下可以访问

5、写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。)

select top 10* from A where id not in(select top 30 id from A)

5、 DataReader与DataSet有什么区别?

(1)、dataset表示一个数据集,是数据在内存中的缓存。可以包括多个表;

(2)、dataset连接数据库时是非面向连接的。把表全部读到Sql中的缓冲池,并断开于数据库的连接

(3)、datareader连接数据库时是面向连接的。读表时,只能向前读取,读完数据后有用户决定是否断开连接。

6、简述什么是装箱?

把一个值类型的数据转换为引用类型的数据的过程叫装箱。

7、下列选项中,(c)是引用类型。

a) enum类型 b) struct类型

c) string类型 d) int类型

8、一个数据库中的一个表中有 year、salary这两个字段,原表中数据如原表,请用SQL查询出结果显示的数据:

原表中数据:

year salary

—————————————–

2000 1000

2001 2000

2002 3000

2003 4000

结果表中数据:

year salary

——————————————

2000 1000

2001 3000

2002 6000

2003 10000

写出SQL语句如下:

create table test([year] int,salary int)

insert test(year,salary) values(2000,1000)

insert test(year,salary) values(2001,2000)

insert test(year,salary) values(2002,3000)

insert test(year,salary) values(2003,4000)

select t1.year,(select sum(salary) from test as t2 where t2.year<=t1.year) as salary from test t1 order by year asc

9、运行下列代码:

class A

{

public A()

{

PrintFields();

}

public virtual void PrintFields(){}

}

class B: A

{

int x= 1;

int y;

public B()

{

y=-1;

}

public override void PrintFields()

{

Console.WriteLine(”x={0},y={1}”, x, y);

}

}

new B()时,输出的结果是:x=?;y=?

x=1;y=0

10、用C#写出singleton(单例)模式的例子?

<一>、我对单例模式的理解说明如下:

单例模式的意图是:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

它的工作原理是:用一个特殊的方法来实例化所需的对象。其中最关键的就是这个特殊的方法:

(1)、调用这个方法时,检查对象是否已经实例化。如果已经实例化,该方法仅返回对该对象的一个引用。如果尚未实例化,该方法就实例化该对象并返回对此新实例的一个引用。

(2)、为了确保这是实例化此类型对象的唯一方法,我将这个类的构造函数定义为保护的或者私有的。

<二>、详细实例如下:

using System;

class Singleton

{

private static Singleton instance;

protected Singleton(){}

public static Singleton Instance()

{

if( instance== null)

instance= new Singleton();

return instance;

}

}

public class Client

{

public static void Main()

{

Singleton s1= Singleton.Instance();

Singleton s2= Singleton.Instance();

if( s1== s2)

Console.WriteLine(“The same instance”);

}

}

如果你还想了解更多这方面的信息,记得收藏关注本站。

行业网站源码(下载一个网站的源码下载)mysql查看数据库 access数据库