程序员笔试题收集汇总(三) - Go语言中文社区

程序员笔试题收集汇总(三)


相关文章:
程序员笔试题收集汇总(一)
http://blog.csdn.net/youyou1543724847/article/details/52383530
程序员笔试题收集汇总(二)
http://blog.csdn.net/youyou1543724847/article/details/52728001
程序员笔试题收集汇总(三)
http://blog.csdn.net/youyou1543724847/article/details/52728079

1. 在使用集合框架时,需要注意什么?
1.考虑选用什么集合(是否允许null,是否需要排序,是否主要是查找,是否大小可确定,主要操作是什么,是否需要同步)
2.考虑集合初始容量,装载因子。
3.当底层集合为空时,返回长度为0的集合或是Array,不要返回null.
4.在使用Map时,考虑是否需要实现它的hashcode和equals方法。
5.在使用Map,set时,使用不变量。

2. Enumeration接口和Iterator接口的区别有哪些?
1.Iterator提供的操作更多(如可通过Iterator删除元素等),且方法命名更简单
2.Iterator更安全,在使用Iterator遍历时,如果集合变了,Iteratorn能够检测出来,并抛出并发修改异常。
3.Enumeration速度是Iterator的2倍,同时占用更少的内存

3. 解释下Marshalling和demarshalling
当应用程序希望把内存对象跨网络传递到另一台主机或者是持久化到存储的时候,就必须要把对象在内存里面的表 示转化成合适的格式。这个过程就叫做Marshalling,反之就是demarshalling

4. swing中的菜单管理
常用的菜单有:下拉式菜单和弹出式菜单(独立显示,可出现在任意地方).
下拉式菜单的结构:JFrame可以有JMenuBar(菜单条),每个JMenuBar可有多个菜单,如“文件”,“帮助”,每个菜单JMenu可以有多个菜单项JMenuItem,如“帮助”JMenu里有“打开”,“保存”等菜单项。
弹出式菜单:JPopupMenu,里面可以有多个JMenuItem(同Windows里的右键菜单)

Servlet

5. 说一下Servlet的体系结构。
所有的Servlet都必须要实现的核心的接口是javax.servlet.Servlet。每一个Servlet都必须要直接或者是间接实现这 个接口,或者是继承javax.servlet.GenericServlet或者javax.servlet.http.HTTPServlet。最后,Servlet使用多线程 可以并行的为多个请求服务。

6. GenericServlet和HttpServlet有什么区别?
GenericServlet是一个通用的协议无关的Servlet,它实现了Servlet和ServletConfig接口。继承自GenericServlet 的Servlet应该要覆盖service()方法。最后,为了开发一个能用在网页上服务于使用HTTP协议请求的Servlet,你的 Servlet必须要继承自HttpServlet。

7. 什么是Servlet链(Servlet Chaining)
Servlet链是把一个Servlet的输出发送给另一个Servlet的方法。第二个Servlet的输出可以发送给第三个Servlet,依 次类推。链条上最后一个Servlet负责把响应发送给客户端。

8. HTTP响应的结构是怎么样的
HTTP响应由三个部分组成:
状态码(Status Code):描述了响应的状态。可以用来检查是否成功的完成了请求。请求失败的情况下,状态码可用 来找出失败的原因。如果Servlet没有返回状态码,默认会返回成功的状态码HttpServletResponse.SC_OK。
HTTP头部(HTTP Header):它们包含了更多关于响应的信息。比如:头部可以指定认为响应过期的过期日期,或者 是指定用来给用户安全的传输实体内容的编码格式。如何在Serlet中检索HTTP的头部看这里。
主体(Body):它包含了响应的内容。它可以包含HTML代码,图片,等等。主体是由传输在HTTP消息中紧跟在头部 后面的数据字节组成的。

9. 什么是cookie?session和cookie有什么区别?
cookie是Web服务器发送给浏览器的一块信息。浏览器会在本地文件中给每一个Web服务器存储cookie。以后浏 览器在给特定的Web服务器发请求的时候,同时会发送所有为该服务器存储的cookie。下面列出了session和 cookie的区别:

无论客户端浏览器做怎么样的设置,session都应该能正常工作。客户端可以选择禁用cookie,但是, session仍然是能够工作的,因为客户端无法禁用服务端的session。
在存储的数据量方面session和cookies也是不一样的。session能够存储任意的Java对象,cookie只能存储 String类型的对象。

10. 浏览器和Servlet通信使用的是什么协议?
浏览器和Servlet通信使用的是HTTP协议。

11.什么是HTTP隧道?
HTTP隧道是一种利用HTTP或者是HTTPS把多种网络协议封装起来进行通信的技术。因此,HTTP协议扮演了一个 打通用于通信的网络协议的管道的包装器的角色。把其他协议的请求掩盖成HTTP的请求就是HTTP隧道。

12. sendRedirect()和forward()方法有什么区别?
sendRedirect()方法会创建一个新的请求,而forward()方法只是把请求转发到一个新的目标上。重定向(redirect) 以后,之前请求作用域范围以内的对象就失效了,因为会产生一个新的请求,而转发(forwarding)以后,之前请求 作用域范围以内的对象还是能访问的。一般认为sendRedirect()比forward()要慢。

13. 什么是URL编码和URL解码?
URL编码是负责把URL里面的空格和其他的特殊字符替换成对应的十六进制表示,反之就是解码。

jsp

14. JSP请求是如何被处理的
浏览器首先要请求一个以.jsp扩展名结尾的页面,发起JSP请求,然后,Web服务器读取这个请求,使用JSP编译器 把JSP页面转化成一个Servlet类。需要注意的是,只有当第一次请求页面或者是JSP文件发生改变的时候JSP文件才 会被编译,然后服务器调用servlet类,处理浏览器的请求。一旦请求执行结束,servlet会把响应发送给客户端

15. JSP有什么优点?
下面列出了使用JSP的优点:
JSP页面是被动态编译成Servlet的,因此,开发者可以很容易的更新展现代码。
JSP页面可以被预编译。
JSP页面可以很容易的和静态模板结合,包括:HTML或者XML,也可以很容易的和产生动态内容的代码结 合起来。
开发者可以提供让页面设计者以类XML格式来访问的自定义的JSP标签库。
开发者可以在组件层做逻辑上的改变,而不需要编辑单独使用了应用层逻辑的页面。

16. 隐含对象是什么意思?有哪些隐含对象?
JSP隐含对象是页面中的一些Java对象,JSP容器让这些Java对象可以为开发者所使用。开发者不用明确的声明就可 以直接使用他们。JSP隐含对象也叫做预定义变量。下面列出了JSP页面中的隐含对象:
application
page
request
response
session
exception
out
config
pageContext

17. 什么是表达式(Expression)
JSP表达式是Web服务器把脚本语言表达式的值转化成一个String对象,插入到返回给客户端的数据流中。表达式 是在<%=和%>这两个标签之间定义的

18. Error、Exception区别
Error类和Exception类的父类都是throwable类,他们的区别是:
Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等.对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。

Exception类表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。

Exception又分为两类:Unchecked Exception和Checked Exception

受查异常:程序必须捕获处理的,代表程序不能直接控制的无效外界情况(如用户输入,数据库问题,网络异常,文件丢失等),如:ClassNotFoundException, NamingException, ServletException, SQLException, IOException等。

不受查异常:包括Error与RuntimeException及其子类,如:OutOfMemoryError, UndeclaredThrowableException, IllegalArgumentException, IllegalMonitorStateException, NullPointerException, IllegalStateException, IndexOutOfBoundsException等。

19. Java中的NIO,BIO,AIO分别是什么
BIO:同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前的唯一选择,但程序直观简单易理解。
NIO:同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.4开始支持。
AIO:异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理.AIO方式使用于连接数目多且连接比较长(重操作)的架构,比如相册服务器,充分调用OS参与并发操作,编程比较复杂,JDK7开始支持。

20. IO和NIO区别
一.IO是面向流的,NIO是面向缓冲区的。
二.IO的各种流是阻塞的,NIO是非阻塞模式。
三.Java NIO的选择器允许一个单独的线程来监视多个输入通道,你可以注册多个通道使用一个选择器,然后使用一个单独的线程来“选择”通道:这些通道里已经有可以处理的输入,或者选择已准备写入的通道。这种选择机制,使得一个单独的线程很容易来管理多个通道。

21. 序列化与反序列化
把对象转换为字节序列的过程称为对象的序列化。
把字节序列恢复为对象的过程称为对象的反序列化。
对象的序列化主要有两种用途:
一.把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;
二.在网络上传送对象的字节序列。
当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。

22. 内存溢出和内存泄漏的区别
内存溢出是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory。
内存泄漏是指分配出去的内存不再使用,但是无法回收。

23.Java内存模型及各个区域的OOM,如何重现OOM
这部分内容很重要,详细阅读《深入理解Java虚拟机》,也可以详细阅读这篇网络文章http://hllvm.group.iteye.com/group/wiki/2857-JVM

24. 出现OOM如何解决
一. 可通过命令定期抓取heap dump或者启动参数OOM时自动抓取heap dump文件。
二. 通过对比多个heap dump,以及heap dump的内容,分析代码找出内存占用最多的地方。
三. 分析占用的内存对象,是否是因为错误导致的内存未及时释放,或者数据过多导致的内存溢出。

25. Java类加载器及如何加载类(双亲委派)
阅读文章:https://www.ibm.com/developerworks/cn/java/j-lo-classloader/(推荐)
http://blog.csdn.net/zhoudaxia/article/details/35824249

26. Statement和PreparedStatement之间的区别
一.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程
二.使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。PreparedStatement 对象的开销比Statement大,对于一次性操作并不会带来额外的好处。
三.statement每次执行sql语句,相关数据库都要执行sql语句的编译,preparedstatement是预编译得, preparedstatement支持批处理
四.代码片段1:
String updateString = “UPDATE COFFEES SET SALES = 75 ” + “WHERE COF_NAME LIKE ′Colombian′”;
stmt.executeUpdate(updateString);
代码片段2:
PreparedStatement updateSales = con.prepareStatement(“UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ? “);
updateSales.setInt(1, 75);
updateSales.setString(2, “Colombian”);
updateSales.executeUpdate();
片断2和片断1的区别在于,后者使用了PreparedStatement对象,而前者是普通的Statement对象。PreparedStatement对象不仅包含了SQL语句,而且大多数情况下这个语句已经被预编译过,因而当其执行时,只需DBMS运行SQL语句,而不必先编译。当你需要执行Statement对象多次的时候,PreparedStatement对象将会大大降低运行时间,当然也加快了访问数据库的速度。
这种转换也给你带来很大的便利,不必重复SQL语句的句法,而只需更改其中变量的值,便可重新执行SQL语句。选择PreparedStatement对象与否,在于相同句法的SQL语句是否执行了多次,而且两次之间的差别仅仅是变量的不同。如果仅仅执行了一次的话,它应该和普通的对象毫无差异,体现不出它预编译的优越性。
五.执行许多SQL语句的JDBC程序产生大量的Statement和PreparedStatement对象。通常认为PreparedStatement对象比Statement对象更有效,特别是如果带有不同参数的同一SQL语句被多次执行的时候。PreparedStatement对象允许数据库预编译SQL语句,这样在随后的运行中可以节省时间并增加代码的可读性。
然而,在Oracle环境中,开发人员实际上有更大的灵活性。当使用Statement或PreparedStatement对象时,Oracle数据库会缓存SQL语句以便以后使用。在一些情况下,由于驱动器自身需要额外的处理和在Java应用程序和Oracle服务器间增加的网络活动,执行PreparedStatement对象实际上会花更长的时间。
然而,除了缓冲的问题之外,至少还有一个更好的原因使我们在企业应用程序中更喜欢使用PreparedStatement对象,那就是安全性。传递给PreparedStatement对象的参数可以被强制进行类型转换,使开发人员可以确保在插入或查询数据时与底层的数据库格式匹配。
当处理公共Web站点上的用户传来的数据的时候,安全性的问题就变得极为重要。传递给PreparedStatement的字符串参数会自动被驱动器忽略。最简单的情况下,这就意味着当你的程序试着将字符串“D’Angelo”插入到VARCHAR2中时,该语句将不会识别第一个“,”,从而导致悲惨的失败。几乎很少有必要创建你自己的字符串忽略代码。

在Web环境中,有恶意的用户会利用那些设计不完善的、不能正确处理字符串的应用程序。特别是在公共Web站点上,在没有首先通过PreparedStatement对象处理的情况下,所有的用户输入都不应该传递给SQL语句。此外,在用户有机会修改SQL语句的地方,如HTML的隐藏区域或一个查询字符串上,SQL语句都不应该被显示出来。

27. TCP和UDP区别
UDP(User Data Protocol,用户数据报协议)
(1) UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。
(2) 由于传输数据不建立连接,因此也就不需要维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息。
(3) UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。
(4) 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。
(5)UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表(这里面有许多参数)。
(6)UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。
小结TCP与UDP的区别:
1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.流模式与数据报模式 ;
5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

28. HTTP请求中Session实现原理
服务端不能主动连接客户端,只能被动等待并答复客户端请求。客户端连接服务端,发出一个HTTP Request,服务端处理请求,并且返回一个HTTP Response给客户端,本次HTTP Request-Response Cycle结束。
我们看到,HTTP协议本身并不能支持服务端保存客户端的状态信息。于是,Web Server中引入了session的概念,用来保存客户端的状态信息。
Session ID实际上是在客户端和服务端之间通过HTTP Request和HTTP Response传来传去的
在Java Web Server(即Servlet/JSP Server)中,Session ID用jsessionid表示(请参见Servlet规范)。

29. 输出几个K?

这里写图片描述
(图一:6个 ;图二:8个)

解释
1、fork()的复制看这里:fork()的一些细节 - http://blog.csdn.net/duyiwuer2009/article/details/8022252

缓冲区也会被复制到子进程的进程空间

2、如果标准输出连接到终端设备,则它是行缓冲的,否则它是全缓冲的。因此,当输出到终端设备时,如果加’n’,调用printf()之后缓冲区会立马被冲刷,输出的内容就不会复制到子进程的进程空间中。

PS
1、哪些段会被复制
The child gets a copy of the parent’s data space, heap, and stack. Note that this is a copy for the child; the parent and the child do not share these portions of memory. The parent and the childshare the text segment.(APUE-2e)
2、写时复制技术(COW)
Current implementations don’t perform a complete copy of the parent’s data, stack, and heap, since a fork is often followed by an exec. Instead, a technique calledcopy-on-write (COW) is used. These regions are shared by the parent and the child and have their protection changed by the kernel to read-only. If either process tries to modify these regions, the kernel then makes a copy of that piece of memory only, typically a “page” in a virtual memory system.(APUE-2e)

Under Linux, fork() is implemented using copy-on-write pages, so the only penalty that it incurs is the time and memory required to duplicate the parent’s page tables, and to create a unique task structure for the child.(man page)

30. 其他

1.JVM字节码指令
http://en.wikipedia.org/wiki/Java_bytecode_instruction_listings
http://blog.csdn.net/ygc87/article/details/12953421

2.JVM运行模式
JVM Server模式与client模式启动,最主要的差别在于:-Server模式启动时,速度较慢,但是一旦运行起来后,性能将会有很大的提升.原因是:

当虚拟机运行在-client模式的时候,使用的是一个代号为C1的轻量级编译器, 而-server模式启动的虚拟机采用相对重量级,代号为C2的编译器. C2比C1编译器编译的相对彻底,,服务起来之后,性能更高.

These two systems are different binaries. They are essentially two different compilers (JITs)interfacing to the same runtime system. The client system is optimal for applications which need fast startup times or small footprints, the server system is optimal for applications where the overall performance is most important. In general the client system is better suited for interactive applications such as GUIs. Some of the other differences include the compilation policy,heap defaults, and inlining policy

3.hotspot
HotSpot虚拟机是java se平台的核心组件,它实现了Java虚拟机规范,并作为共享库的形式提供给JRE。它作为字节码的执行引擎,提供了Java运行的工具,例如线程和同步。在大多数操作系统和平台上,包括动态编译器(将Java字节码编译成优化了相应的机器指令,同时可以高效的使用GC机制管理堆内存(低停顿,高吞吐量))。它也为profiling,监控,调试工具提供数据和信息。

    HotSpot是一款“人体工程学”的JVM,它能够基于平台配置,自动选择编译器、java heap配置,GC方式。

    oracle有两种JVM,一是HotSpot,另一个是JRockit.以后可能会将这些融合在一起。

4 异常
1.try-catch-finally:不管try,catch句子中包含什么,finally都会执行。如try里returned,或catch里包含returned,或catch里又抛出了异常,finally还是会执行。除非,在try,catch里调用了System.exit()之类的语句,令程序终止了,否则,finally还是很坚强的。
2.如果一个方法抛出了异常,则要么该方法需要用try-catch-finally语句将抛出异常的地方包围起来,要么在方式声明时,加上“throws Exception”这样的声明。
3.方法中finally之后的代码为不可达代码,抛出异常的语句后的代码也为不可达代码,之后如果有语句,则编译器报错!
4.在带返回值的包含try-catch-finally的函数中,如果finally中有返回语句,则finally块中的返回值会覆盖try-catch中的返回值,如果finally块中不带return语句,则返回值根据执行流确定。
5.在带返回值的包含try-catch-finally的函数中,返回值会有一个存储单元存储它的值,如果返回值为基本数据类型,则执行return语句时,会更新它的值,而对相应变量的修改不会反映到它的值变化上(这操作的是两个存储单元)

5 初始化
1.顺序:先是父类Static语句块、子类Static语句块、父类普通语句块、父类构造器、子类普通语句块、子类构造器。
当只是调用了子类的静态方法,没有创建对像时,则只调用父类Static语句块、子类Static语句块。
注意:类中的普通语句块是每新建一次对象,则调用一次,类似与构造器。
当新建子类对象时,对父类构造器的调用分为显示和隐式的,如果没有显示的调用,则编译器会自动在子类构造器中第一条语句位置上插入对父类空构造器的调用(此时,如果父类无无参数的构造器,则会有编译错误)

6修饰符
final:
使用final修饰非static变量,意味该变量只能赋值一次,且只能在构造函数、普通语句块、定义时赋值。
使用final修饰static类变量,意味该变量只能赋值一次,且只能在静态语句块、定义时赋值。
注意:使用final修饰变量,如果该变量为对象类型,则表明的是该变量只能绑定到初始化时给的那个对象A上去,不能指向其他的对象B,但是A的值还是可变的(如A.name=newname,这是合法的,但是A=new Atype(),这是不可以的)
使用final修饰方法,则该方法不能继承,但是可以重载

7.接口
接口中只能有常量(如果有变量,则违反了接口封装的目的【变量属于细节,应该由提供的方法接口来获取其状态】,另一方面,这会使得接口的多继承产生问题?如果需要提供变量,可通过抽象类来提供)

8 方法
1.方法是编译时类型确定的,如Super A=new Sub();则A可调用的方法只能是Super父类中定义的,为了用A调用Sub子类的方法,则需要强制类型转换。
2.JAVA中对象是通过引用变量来操作的,在函数调用时,如果参数是对象类型,则传递的是对象的引用,注意:形参是实参的拷贝,是两个引用,只是开始时,指向同一个对象.

9.类
1.包装类:Integer,BigDecinal等包装类都是不可变的,同String。
2.内部类:非静态内部类实例依赖于一个外部类实例(内部类独立于外部类存在,但是可以使用外部类的变量,方法,并且同时可以继承其他的类【相当于可以提供多重继承】

10.数与运算操作
1.注意隐式的类型转换
2.类型的符号问题:byte,short,int都是有符号数,最小负数无对应的相反数,如byte的-128的相反数还是-128(byte总共256个数,还有一个零,正负数不对称)
3.程序中出现的整数默认当作Int处理,如果赋值给了非Int整形,则会进行转换。如果希望当作Long型处理,则要显示说明,如Long num=122L。
4.程序中出现的浮点数默认当作Double处理。如果希望当作Float型处理,则要显示说明,如float num=122f。
5.浮点数不精确,不能准确的表示实际中数。因此,运算可能导致误差,如果程序需要做到确切,则需要使用其他类型或方法。

11. 流
1.系统自带的程序输入输出流:system.in,system.out为字节流。
2.流分为两大类:字节流,字符流
3.子类的流可以用父类流包装,成一个功能更强的流,如字节流:inputstream,outputstream,下面的bufferoutputstream,bufferinputstream,fileinputstream,fileoutputstream等
4.一般字节流以stream结尾,字符流以writer,reader结尾。有时候需要将字节流和字符流进行转化,则需使用InputStreamReader(转化成字符流),OutputStreamWritter(转化成字节流)转化流。
如:BufferedReader stdin =new BufferedReader( new InputStreamReader(System.in) );
5.序列化时,使用Objectinputstream,ObjectOutputstream

12.Java GUI
AWT和Swing的比较:
AWT(Abstract Window Toolkit):抽象窗口工具包,早期编写图形界面应用程序的包。
Swing :为解决 AWT 存在的问题而新开发的图形界面包。Swing是对AWT的改良和扩展。
AWT的图形函数与操作系统提供的图形函数有着一一对应的关系。也就是说,当我们利用 AWT构件图形用户界面的时候,实际上是在利用操作系统的图形库。
不同的操作系统其图形库的功能可能不一样,在一个平台上存在的功能在另外一个平台上则可能不存在。为了实现Java语言所宣称的”一次编译,到处运行”的概念,AWT不得不通过牺牲功能来实现平台无关性。因此,AWT 的图形功能是各操作系统图形功能的“交集”。
因为AWT是依靠本地方法来实现功能的,所以AWT控件称为“重量级控件”。
Swing:不仅提供了AWT 的所有功能,还用纯粹的Java代码对AWT的功能进行了大幅度的扩充。由于 Swing是用纯粹的Java代码来实现的,因此Swing控件在各平台通用。因为Swing不使用本地方法,故Swing控件称为“轻量级控件”。

13 Java内存管理及回收算法

14 xml解析方式

15 Hibernate/Ibatis两者的区别

16.get提交是否有字节限制,如果有是在哪限制的

17.get提交和post提交的区别

18.HTTP报文内容

19.OSI七层模型以及TCP/IP四层模型

20.如果客户端不断的发送请求连接会怎样

21.DDos攻击 DDos预防

22.那怎么知道连接是恶意的呢?可能是正常连接

23.Redis的存储结构
SDS
map
list
set
zset
24.数据库索引的优缺点以及什么时候数据库索引失效

25.SQL性能优化

26.数据库索引的实现(B+树介绍、和B树、R树区别)

27.SQL注入的原理,如何预防

28.如何实现不同数据库的数据查询分页

29.乐观锁和悲观锁

30.数据库连接池的原理

31.范式

32.死锁预防

33.产生死锁的必要条件

33.操作系统什么情况下会死锁

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/youyou1543724847/article/details/52728079
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-06-28 01:31:47
  • 阅读 ( 1097 )
  • 分类:职场

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢