Java中级开发工程师 面试题?
注意事项
- 本线上笔试题主要是考察应聘人员的编码规范、代码设计能力,非单纯考察程序结果是否符合要求;
- 请务必不要在网上抄摘相关代码;
试题一
/** * 实现要求: * 1、根据已有的代码片段,创建二叉搜索树; * 2、用中序遍历输出排序结果,结果形如:0,1,2 ,3 ,4, 5, 6, 7, 8, 9, * 3、使用递归、非递归二种方式实现遍历; * 4、注意编写代码注释。 */ public static void main(String[] args) { final int[] values = { 1, 3, 4, 5, 2, 8, 6, 7, 9, 0 }; System.out.println("Create BST: "); Node root = createBinaryTree(values); System.out.println("Traversing the BST with recursive algorithm: "); inOrderTransvalWithRecursive(root); System.out.println("Traversing the BST with iterative algorithm: "); inOrderTransvalWithIterate(root); } // 构建二叉树 public static Node createBinaryTree(int[] values) { // TODO: } // 递归实现 public static void inOrderTransvalWithRecursive(Node node) { // TODO: } // 非递归实现 public static void inOrderTransvalWithIterate(Node root) { // TODO: } }
试题二
/** * 实现要求: * 1、根据代码片段实现一个简单的SOCKET ECHO程序; * 2、接受到客户端连接后,服务端返回一个欢迎消息; * 3、接受到"bye"消息后, 服务端返回一个结束消息,并结束当前连接; * 4、采用telnet作为客户端,通过telnet连接本服务端; * 5、服务端支持接受多个telnet客户端连接; * 6、服务端支持命令操作,支持查看当前连接数、断开指定客户端连接; * 7、注意代码注释书写。 * */ public class EchoApplication { public static void main(String[] args) throws IOException, InterruptedException { final int listenPort = 12345; // 启动服务端 EchoServer server = new EchoServer(listenPort); server.startService(); // 服务端启动后,运行结果示例: /** java -cp ./classes EchoApplication 2020-03-31 16:58:44.049 - Welcome to My Echo Server.(from SERVER) The current connections: Id. Client LogonTime ----------------------------------------------------- 1 127.0.0.1:32328 2020-03-31 16:59:13 2 127.0.0.1:43434 2020-03-31 17:03:02 3 127.0.0.1:39823 2020-03-31 07:03:48 Enter(h for help): h The commands: ---------------------------------------------------- q query current connections d id disconnect client x quit server h help Enter(h for help): d 1 2020-03-31 16:58:44.049 - The connection '127.0.0.1:32328' has been disconnected. The current connections: Id. Client LogonTime ----------------------------------------------------- 1 127.0.0.1:43434 2020-03-31 17:03:02 2 127.0.0.1:39823 2020-03-31 07:03:48 Enter(h for help): x 2020-03-31 16:58:44.049 - The server has exited. Bye! */ // 在telnet控制台输入,服务端直接原文返回输入信息 // 客户端结果示例: /** 2020-03-31 16:58:44.049 - Welcome to My Echo Server.(from SERVER) Enter: hello! 2020-03-31 16:58:55.452 - hello!(from SERVER) Enter: This is KOAL. 2020-03-31 16:59:06.565 - This is KOAL.(from SERVER) Enter: What can i do for you? 2020-03-31 16:59:12.828 - What can i do for you?(from SERVER) Enter: bye! 2020-03-31 16:59:16.502 - Bye bye!(from SERVER) */ } } class EchoServer { // TODO }
试题三
/** * 实现要求: * 1、根据代码片段,参考log4j/slf4j等公共日志库,编写一个自定义的简易日志类; * 2、至少支持文件输出、控制台输出二种日志输出方式,支持同时输出到文件和控制台; * 3、支持DEBUG/INFO/WARN/ERROR四种日志级别; * 4、请合理进行设计模式,进行接口类、抽象类等设计; * 5、注意代码注释书写。 */ public class KLLogger { public static void main(String[] args) { final KLLogger logger = KLLogger.getLogger(KLLogger.class); // TODO logger.setAppender(...); logger.setLogLevel(DebugLevel.DEBUG); logger.debug("debug 1..."); logger.info("info 1..."); logger.warn("warn 1..."); logger.error("error 1..."); // TODO logger.setAppender(...); logger.setLogLevel(DebugLevel.ERROR); logger.debug("debug 2..."); logger.info("info 2..."); logger.warn("warn 2..."); logger.error("error 2..."); } } // TODO: class XXX1 { } // TODO: class XXX2 { } enum DebugLevel { DEBUG, INFO, WARN, ERROR; }
