61、编写多线程程序有几种实现方式?
https://www.cnblogs.com/programb/p/13021440.html\
62、synchronized 关键字的用法?
https://blog.csdn.net/qq441568267/article/details/53259257
63、举例说明同步和异步。
如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。
当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效率。
Java中交互方式分为同步和异步两种:
同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程;
异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。
区别:一个需要等待,一个不需要等待,在部分情况下,我们的项目开发中都会优先选择不需要等待的异步交互方式。
哪些情况建议使用同步交互呢?比如银行的转账系统,对数据库的保存操作等等,都会使用同步交互操作,其余情况都优先使用异步交互
64、启动一个线程是调用 run()还是 start()方法?
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM 调度并执行,这并不意味着线程就会立即运行。run()方法是线程启动后要进行回调(callback)的方法。
65、什么是线程池(thread pool)?
https://blog.csdn.net/troubleshooter/article/details/78361835
66、线程的基本状态以及状态之间的关系?
https://blog.csdn.net/bornlili/article/details/55805732
67、简述 synchronized 和 java.util.concurrent.locks.Lock 的异同?
主要相同点:Lock能完成synchronized所实现的所有功能 。
主要不同点:Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放。Lock还有更强大的功能,例如,它的tryLock方法可以非阻塞方式去拿锁。
68、Java 中如何实现序列化,有什么意义?
https://www.cnblogs.com/z-zzz/articles/6542493.html
69、Java 中有几种类型的流?
字节流和字符流。字节流继承于 InputStream、OutputStream,字符流继承于Reader、Writer。
https://blog.csdn.net/zhaoyanjun6/article/details/54292148
70、写一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。
https://blog.csdn.net/Sun_940903/article/details/79931538
71、如何用 Java 代码列出一个目录下所有的文件?
https://zhidao.baidu.com/question/1953037471923949868.html
72、用 Java 写一个折半查找。
https://blog.csdn.net/weixin_35042833/article/details/114111078
73、XML 文档定义有几种形式?它们之间有何本质区别?解析 XML文档有哪几种方式?
https://blog.csdn.net/qq_28061489/article/details/79464865
74、阐述 JDBC 操作数据库的步骤。
https://blog.csdn.net/troubleshooter/article/details/78364786
75、Statement 和 PreparedStatement 有什么区别?哪个性能更好?
https://www.cnblogs.com/gjack/p/8901307.html
76、使用 JDBC 操作数据库时,如何提升读取数据的性能?如何提升更新数据的性能?
要提升读取数据的性能,可以指定通过结果集(ResultSet)对象指定每次抓取数据的大小(fetch size);要提升更新数据的性能可以使用PreparedStatement语句构建批处理(batch)。
77、在进行数据库编程时,连接池有什么作用?
由于创建连接和释放连接都有很大的开销(尤其是数据库服务器不在本地时,每次建立连接都需要进行 TCP 的三次握手,再加上网络延迟,造成的开销是不可忽视的),为了提升系统访问数据库的性能,可以事先创建若干连接置于连接池中,需要时直接从连接池获取,使用结束时归还连接池而不必关闭连接,从而避免频繁创建和释放连接所造成的开销,这是典型的用空间换取时间的策略(浪费了空间存储连接,但节省了创建和释放连接的时间)。池化技术在 Java 开发中是很常见的,在使用线程时创建线程池的道理与此相同。基于 Java 的开源数据库连接池主要有: C3P0、Proxool、DBCP、BoneCP、Druid等。
【补充】在计算机系统中时间和空间是不可调和的矛盾,理解这一点对设计满足性能要求的算法是至关重要的。大型网站性能优化的一个关键就是使用缓存,而缓存跟上面讲的连接池道理非常类似,也是使用空间换时间的策略。可以将热点数据置于缓存中,当用户查询这些数据时可以直接从缓存中得到,这无论如何也快过去数据库中查询。当然,缓存的置换策略等也会对系统性能产生重要影响,对于这个问题的讨论已经超出了这里要阐述的范围。