还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!
王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。
对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!
【完整版领取方式在文末!!】
93道网络安全面试题
内容实在太多,不一一截图了
黑客学习资源推荐
最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
1️⃣零基础入门
① 学习路线
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
② 路线对应学习视频
同时每个成长路线对应的板块都有配套的视频提供:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Properties props = new Properties();
props.load(new FileReader(“db.properties”, StandardCharsets.UTF_8));
InputStream是字节流,Reader是字符流,因为字符流在内存中已经以char类型表示了,所以不涉及到编码问题。这样通过以上代码,我们就可以正常读取包含中文的配置信息了。
### 2. 读取Properties文件
#### 2.1 加载配置文件
接下来我们可以使用`Properties类的load()方法`,来读取上面创建的配置文件,例如:
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
public class Demo23 {
public static void main(String[] args) {
//创建Properties对象
Properties properties = new Properties();
try {
//设置db.properties配置文件,利用字节流来加载文件
//寻找.properties文件路径方式一
//从当前项目的根目录下寻找db.properties文件
URL url = Demo23.class.getResource("/db.properties");
String path = url.getPath();
System.out.println("path="+path);
InputStream inputStream = new FileInputStream(path);
//寻找.properties文件路径方式二
//InputStream inputStream = Demo23.class.getResourceAsStream("/db.properties");
//加载字节流
properties.load(inputStream);
System.out.println("properties="+properties);
} catch (IOException e) {
e.printStackTrace();
}
}
}
在一个普通的Java项目中,如果我们想读取.properties配置文件,**可以有两种方式:**
1. **类名.class.getResource(“配置文件路径及名称”)** :该方式会得到一个URL对象,它代表了配置文件的路径;
2. **类名.class.getResourceAsStream(“配置文件路径及名称”)** :该方式会直接得到InputStream对象。
在上面的代码中,我们读取到了名为db.properties的配置文件,并将其存储在一个Properties对象中。
#### 2.2 读取配置信息
在上面的代码中,我们从配置文件中读取了三个键值对,分别是`jdbc.url、jdbc.username`和`jdbc.password`。在读取配置文件后,接下来我们就可以通过`getProperty()`方法来获取配置信息了。如果配置文件中不存在这些键,`getProperty()`方法将会返回null。
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
public class Demo23 {
public static void main(String[] args) {
//创建Properties对象
Properties properties = new Properties();
try {
//设置db.properties配置文件,利用字节流来加载文件
//寻找.properties文件路径方式一
//从当前项目的根目录下寻找db.properties文件
URL dbUrl = Demo23.class.getResource("/db.properties");
String path = dbUrl.getPath();
System.out.println("path="+path);
InputStream inputStream = new FileInputStream(path);
//寻找.properties文件路径方式二
//InputStream inputStream = Demo23.class.getResourceAsStream("/db.properties");
//加载字节流
properties.load(inputStream);
System.out.println("properties="+properties);
//从配置文件中根据指定的key来读取配置信息
String url = properties.getProperty("jdbc.url");
String username = properties.getProperty("jdbc.username");
String password = properties.getProperty("jdbc.password");
System.out.println("[url]="+url+" ,[username]="+username+" ,[password]="+password);
} catch (IOException e) {
e.printStackTrace();
}
}
}
要注意,**我们在调用** **getProperty()方法** **获取配置信息时,如果指定的key不存在,会返回** **null** **。但我们可以提供一个默认值,这样当key不存在时会返回一个默认值。** 并且如果有多个.properties文件,可以反复调用load()读取,后读取的key-value会覆盖已读取的key-value。
#### 2.3 使用默认值读取信息
在读取配置文件时,如果某个键不存在,getProperty()方法将返回null。为了避免出现NullPointerException,我们可以为getProperty()方法指定一个默认值,例如:
String url = properties.getProperty(“jdbc.url”, “jdbc:mysql://localhost:3306/mydb”);
String username = properties.getProperty(“jdbc.username”, “root”);
String password = properties.getProperty(“jdbc.password”, “root”);
在以上代码中,如果配置文件中不存在jdbc.url这个键,getProperty方法会返回我们设置的默认值"jdbc:mysql://localhost:3306/mydb"。
### 3. 写入Properties文件
接下来我们再通过一个案例,来学习如何把配置信息写入到Properties文件里。
#### 3.1 写入配置文件
我们可以使用Properties类的store方法来写入配置文件,例如:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.util.Properties;
public class Demo24 {
public static void main(String[] args) {
//设置配置信息
Properties properties = new Properties();
properties.setProperty(“jdbc.url”, “jdbc:mysql://localhost:3306/mydb2”);
properties.setProperty(“jdbc.username”, “root”);
properties.setProperty(“jdbc.password”, “syc”);
try {
URL dbUrl = Demo24.class.getResource("/db.properties");
String path = dbUrl.getPath();
System.out.println("path="+path);
OutputStream outputStream = new FileOutputStream(path);
//写入配置信息
properties.store(outputStream, "Database connection properties");
// 寻找.properties文件路径方式二
InputStream inputStream = Demo24.class.getResourceAsStream("/db.properties");
// 加载字节流
properties.load(inputStream);
System.out.println("properties=" + properties);
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上代码中,将三个键值对写入到了名为`db.properties`的配置文件中,并添加了一行注释`“Database connection properties”`。
#### 3.2 使用默认值写入信息
另外在Properties类中,其实本身就有一个默认的Properties对象,可以用来设置一些默认属性值。我们可以使用Properties类的getDefaultProperties()方法来获取默认的Properties对象,然后使用setProperty()方法来设置默认属性值,例如:
Properties defaultProperties = Properties.getDefaultProperties();
defaultProperties.setProperty(“jdbc.url”, “jdbc:mysql://localhost:3306/mydb”);
defaultProperties.setProperty(“jdbc.username”, “root”);
defaultProperties.setProperty(“jdbc.password”, “root”);
Properties properties = new Properties(defaultProperties);
以上代码中,我们先获取了默认的Properties对象,然后设置了`jdbc.url、jdbc.username`和`jdbc.password`三个默认属性值。接着,我们创建了一个新的`Properties`对象,并将默认的`Properties`对象传递给它。这样,在读取配置文件时,如果某个键不存在,`getProperty`方法就会先在当前`Properties`对象中查找,如果找不到,就会在默认`Properties`对象中查找。
## 四. 读写XML配置文件
其实Properties类不仅可以操作.properties配置文件,也可以操作.xml格式的文件,**接下来再给大家讲一下如何操作xml文件。**
### 1. 创建XML文件
首先我们来创建一个xml格式的配置文件,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
jdbc:mysql://localhost:3306/mydb root root
大家要注意,这里我们要使用`<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">`语句来声明一个`properties`根结点,大家可以根据自己的需要定义自己的节点名称。
### 2. 读取XML配置文件
要想读取XML格式的配置文件,可以使用loadFromXML()方法从XML文件中读取配置信息,例如:
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
public class Demo25 {
public static void main(String[] args) {
// 创建Properties对象
Properties properties = new Properties();
try {
// 从当前项目的根目录下寻找db.properties文件
InputStream inputStream = Demo25.class.getResourceAsStream(“/config.xml”);
// 加载字节流,从XML文件中读取配置信息
properties.loadFromXML(inputStream);
// 从配置文件中根据指定的key来读取配置信息
// 读取信息时设置默认值
String url = properties.getProperty("jdbc.url","jdbc:mysql://localhost:3306/mydb2");
String username = properties.getProperty("jdbc.username", "syc");
String password = properties.getProperty("jdbc.password", "syc");
System.out.println("[url]="+url+" ,[username]="+username+" ,[password]="+password);
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上代码读取了名为config.xml的XML配置文件,并将其存储在一个Properties对象中。在读取XML格式的配置文件后,我们就可以通过getProperty方法来获取配置信息了。
### 3. 写入XML配置文件
同时,我们也可以使用storeToXML()方法,将Properties中的键值对信息存储到XML格式的输出流中,例如:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.util.Properties;
public class Demo26 {
public static void main(String[] args) {
// 设置配置信息
Properties properties = new Properties();
properties.setProperty(“jdbc.url”, “jdbc:mysql://localhost:3306/mydb2”);
properties.setProperty(“jdbc.username”, “root”);
properties.setProperty(“jdbc.password”, “syc”);
try {
URL dbUrl = Demo26.class.getResource("/config.xml");
String path = dbUrl.getPath();
OutputStream outputStream = new FileOutputStream(path);
// 写入配置信息
学习路线:
这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!