Java 笔试总结

总结一下今天笔试中遇到的问题

1. String 类型变量 + int 类型变量 ?
我以为会编译报错,结果测试后发现是字符串的拼接。
解析:
Java 中字符串和数字直接用 ‘+’ 号连接,是把数字当成了字符串,这是JAVA的自动装箱机制,最终相当于字符串的拼接。

2 . 进程间的通信方式有哪些?
解析:进程间通信方式有 管道、消息队列、信号量、共享内存、Socket套接字。 (这一块不太熟悉,先做个标记)

3. SQL的注入是什么,如何防止?
我大概知道是通过特殊拼接的 sql 欺骗服务器,执行不安全操作。但是表达不够清晰。
解析:所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
防止:

  • 不要使用动态拼装 sql ,使用参数化的 sql。
  • 不要信任用户输入,对输入进行校验,可通过正则表达式,或限制长度,对单引号进行转换。

4. http 协议中 get 和 post 的区别?
解析:get 和 post 都是向服务器提交数据,并且都会从服务器获取数据。
区别:

  • 传送方式:get 通过地址栏传输,post 通过报文传输。
  • 传送长度:get 参数用长度限制(受限于 url 长度),而 post 无限制。
  • 安全性:get 安全性非常低,post 安全性较高,但是执行效率 post 比 get 效率高。
  • get 产生一个 TCP 数据包,post 产生两个 TCP 数据包 。(对于get,浏览器会把 header 和 data 一起发送出去,服务器响应200 (返回数据)。 对于post,浏览器先发送 header 服务器响应100 继续,浏览器再发送 data 服务器响应 200 (返回数据))(所以,get 比 post 更高效,但不安全,使用须谨慎)

小结:
学习是一个漫长的积累的过程,遇到问题多总结,多思考。

猜你喜欢

转载自blog.csdn.net/weixin_40307206/article/details/102473304