val os = socket.getOutputStream()
os.write(message.toByteArray())
os.flush()
} catch (e: IOException) {
e.printStackTrace()
}
}
}
}
inner class readerThread(socket: Socket) : Thread() {
lateinit var inputStream: InputStream
init {
try {
// 获取输入流
inputStream = socket.getInputStream()
} catch (e: IOException) {
e.printStackTrace()
}
}
override fun run() {
super.run()
try {
var inputStream: InputStream = inputStream
var len = 0
val buf = ByteArray(1024)
while (inputStream.read(buf).let { len = it;it != -1 }) {
println("Server receives data from client: " + String(buf, 0, len))
SendMessageToAllUser(String(buf, 0, len))
}
} catch (e: IOException) {
e.printStackTrace()
}
}
}
}
-----------------------------------客户端------------------------------------
class Client constructor(host: String, port: Int) : Thread() {
var socket: Socket
init {
socket = Socket(host, port)
}
override fun run() {
super.run()
sendMessThread().start()
super.run()
try {
// 读Sock里面的数据
val inputStream = socket.getInputStream()
val buf = ByteArray(1024)
var len = 0
while (inputStream.read(buf).let { len = it;it != -1 }) {
println(String(buf, 0, len))
}
} catch (e: IOException) {
e.printStackTrace()
}
}
inner class sendMessThread : Thread() {
override fun run() {
super.run()
//写操作
var scanner: Scanner? = null
var os: OutputStream? = null
try {
scanner = Scanner(System.`in`)
os = socket.getOutputStream()
var input = ""
do {
input = scanner.next()
os!!.write("client:$input".toByteArray())
os.flush()
} while (input != "bye")
} catch (e: IOException) {
e.printStackTrace()
}
scanner?.close()
try {
os?.close()
} catch (e: IOException) {
e.printStackTrace()
}
}
}
}
--------------------------------------测试----------------------------------
fun main() {
startServer()
startClient()
}
fun startServer() {
Server(6768).start()
}
fun startClient() {
//你电脑本地的ip,端口号随便设置
Client("192.168.31.48", 6768).start()
}
由于一个kt文件只能有一个main方法,所以再创建一个kt文件
ClientB.kt
------------------------------测试(开第二个客户端)-------------------------
fun main(){
总结
虽然面试套路众多,但对于技术面试来说,主要还是考察一个人的技术能力和沟通能力。不同类型的面试官根据自身的理解问的问题也不尽相同,没有规律可循。
上面提到的关于这些JAVA基础、三大框架、项目经验、并发编程、JVM及调优、网络、设计模式、spring+mybatis源码解读、Mysql调优、分布式监控、消息队列、分布式存储等等面试题笔记及资料
有些面试官喜欢问自己擅长的问题,比如在实际编程中遇到的或者他自己一直在琢磨的这方面的问题,还有些面试官,尤其是大厂的比如 BAT 的面试官喜欢问面试者认为自己擅长的,然后通过提问的方式深挖细节,刨根到底。
692)]
[外链图片转存中…(img-XYFcKWJo-1719279130692)]
上面提到的关于这些JAVA基础、三大框架、项目经验、并发编程、JVM及调优、网络、设计模式、spring+mybatis源码解读、Mysql调优、分布式监控、消息队列、分布式存储等等面试题笔记及资料
有些面试官喜欢问自己擅长的问题,比如在实际编程中遇到的或者他自己一直在琢磨的这方面的问题,还有些面试官,尤其是大厂的比如 BAT 的面试官喜欢问面试者认为自己擅长的,然后通过提问的方式深挖细节,刨根到底。