西安java面试总结1

这是我第二次的面试。其实第一次也算不上面试,去了让我手写了几道题,三道算法题,一道SQL题,两道逻辑思维题,做完之后也没看我的解答,随便看了一眼简历,觉得我是大二的,大三还有课,没办法兼顾实习,就让我走了。那次本来想混个面试经验,结果基本上毫无收获。

第二次面试,也就是这次,boss上写的是一家20人以下的小公司,第一次给我线上面试。

一面

  • 自我介绍
  • 找实习的目的
  • 学了哪些课
  • 数据结构学了吗
  • 十进制转十六进制怎么做,用代码怎么写
  • Java中的基本数据类型
  • Java中的包装类
  • JavaEE学了些什么
  • 没学过servlet、jsp吗
  • jdbc学过是吧
  • jdbc的操作数据库的步骤
  • 什么是事务
  • 转账这个例子,用jdbc怎么完成
  • 持久层框架学了哪些?只学了Mybatis是吧?
  • 那么转账这个例子,用Mybatis怎么操作,注意,要求仅使用Mybatis
  • 如果结合Spring框架,如何完成事务
  • io操作熟悉吗
  • 如果我有一个日志文件,怎么提取重要信息保存到数据库中
  • 日志包括些什么?

这是这家公司的第一次面试问到的问题,线上面试,线上面试也让我汗流浃背。问了很多关于jdbc的操作,我记得都说已经不用这个技术了,我当时也是抱着好奇的态度去了解了一下,当然仅限于了解,大概知道是怎么回事,没有具体深入学习,也基本没有上过手。所以答的还是比较艰难。

其次,对于io操作和日志相关问题,我觉得是我的很大的弱点,当时在学javase的时候,就觉得这方面很无聊,很枯燥,而且我自己没怎么实际用过,所以非常生疏,答的非常狼狈。不过面试官非常好,一直在鼓励和引导我,告诉我“不用紧张,只是找实习,要求肯定没有那么高,今天我们就当交流技术了”,后面io操作和日志我答不出来的时候,一直在引导我,向老师一样一点一点教我,我那会都觉得我没在面试,我在什么计算机培训班上课,真的很感谢这位面试官。

到了反问环节,我一共问了两个问题

  1. 您觉得我还需要学习什么,在以后的学习里有什么要注意的地方?

    • 建议我还是需要了解JDBC、Servlet、JSP相关技术,虽然有些已经过时,但是是比较基础的东西,现在的框架都是基于这些完成的。Spring这些东西就有一点像计算器了,真正到比如说做毕设这样的时候,再用它也可以。所以对于时间还充足的学生来说,还是要钻研一下的。其次对于一些写代码中用到的东西,多思考,比如netty,底层是基于NIO实现的,可以思考NIO是什么,为什么不用NIO,netty有什么变化这些问题。
  2. 面试结果什么时候出

    • 本周内

其实这次面试结束后,我觉得按我的表现,估计没什么希望了。结果在周五的时候,boss上通知我说通过了,不过我没想到还有二面,二面需要到公司去。我真正去到公司,在一所研究所内,约的时间是下午三点,那天下午很热。和第一次很像,不过第一次是两点,我去了哪里没有找到位置,所以我这次打算还是十二点吃完饭就出门,去了先找找位置,而且天气热,打算给自己留一点休息和下汗的时间,不然满头大汗的去,一个是影响状态,另一个是会让我自己觉得很狼狈,很不好意思。

去了之后,因为研究所需要人领路,不然无法进去。所以公司让我到了打电话,有人来接我,我也见到那个人很好的面试官,就是上次面试我的。进入办公室,里面好像就三四个人,给了我一台电脑,告诉我一面是问一些问题,二面就上手做一些题。

二面

一共三道题,分别如下:

  1. 两个线程,分别交替打印1-100,不能重复
  2. 自己建一张User表,对其进行增删改查
  3. 没仔细看,大概是和一面问的很像,io操作后保存到数据库。

第一道题做了比较久,我了解多线程,但是基本上没有手敲过代码,所以那天卡了很久。第二道题,给了spring框架,但是没有Mybatis,让我用Spring JDBC来操作,我被卡在了分页查询那,我说我不太会,面试官问我,那你以前怎么做分页,我说用Mybatis的分页插件PageHelper。他说,你看,给你说少用Mybatis,没了它就好像什么也不会。我也觉得是这样,对于Spring整合Mybatis框架,进行增删改查,我还是比较熟练。但是没了框架,或者让我从头搭起框架结构,我就有一些手忙脚乱,不知道该做什么。

总结

所以,最后总结一下,这次面试是失败的,但是我确实有所收获,不像第一次。

  1. 多敲,除了多背八股,多敲代码,尤其多线程,IO操作,以及从0开始自己写项目的能力,而不是把项目大概结构拿过来,在其基础上做增删改查。
  2. 后续还是要学习一下JDBC、Servlet、JSP相关技术
  3. 重新学习IO相关知识
### Java面试常见问题和技术知识点 #### 面试前的基础准备 在Java开发岗位的面试过程中,通常会涉及多个层次的技术考察。以下是常见的技术知识点及其重要性的概述: 1. **Java基础** - 掌握基本语法结构、数据类型、运算符等内容是必不可少的。这些内容构成了后续更深层次学习的基础[^1]。 - 特别需要注意的是字符串处理(String类),它作为不可变对象的特点以及其内部机制。 2. **面向对象编程(OOP)原则** - 理解并能够阐述封装(encapsulation)、继承(inheritance)、多态(polymorphism)这三个核心概念[^3]。 - 对于抽象类(Abstract Class)与接口(Interface)的区别也需要清晰明了,在实际项目中的应用场景也经常被提问。 3. **集合框架(Collection Framework)** - ArrayList vs LinkedList 的性能比较及适用场景分析[^3]。 - HashMap 和 Hashtable 的异同点,尤其是线程安全性方面的问题解答。 4. **并发编程(Multithreading & Concurrency)** - 如何创建线程(Thread class, Runnable interface)? - synchronized关键字的作用范围是什么? 它如何保障同步? - volatile变量的意义在哪里? - 并发包(java.util.concurrent)下的主要组件介绍,比如ExecutorService、CountDownLatch等. 5. **异常处理(Exception Handling)** - 自定义异常的设计模式。 - try-with-resources语句简化资源管理的方式. 6. **I/O操作(Input/Output Operations)** - NIO(New Input Output)相对于传统IO的优势有哪些? 7. **数据库交互(Database Interaction)** - SQL查询优化技巧,特别是GROUP BY子句的应用[^3]. - JDBC API的基本使用方法;PreparedStatement防止SQL注入攻击原理说明. 8. **Web应用开发(Web Application Development)** - Servlet生命周期详解. - Session管理和Cookie区别联系讨论[^3]. 9. **设计模式(Design Patterns)** - 单例(Singleton), 工厂(Factory Method/Facade), 责任链(Chain of Responsibility)等经典模式的实际案例分享[^1]. 10. **JVM调优(JVM Tuning)** - 堆内存分配策略; 新生代老年代划分依据. - GC(Garbage Collection)算法种类及其工作流程描述[^3]. #### 实际编码能力测试 除了理论知识外,候选人还可能面临现场编写代码的任务。因此熟悉一些常用的算法和数据结构非常重要: - 数组(Array): 查找最大最小值, 反转数组元素顺序等等简单题目练习. - 字符串(String Manipulation): 判断回文数, 替换特定字符等功能实现. - 图(Graph Traversal Algorithms): BFS(Breadth First Search)/DFS(Depth First Search). 另外还需要注意时间空间复杂度(Time Complexity / Space Complexity)评估标准的学习[^2]. ```java // Example Code Snippet Demonstrating Basic Sorting Algorithm Implementation In Java public static void bubbleSort(int[] array){ int n = array.length; boolean swapped; do{ swapped=false; for (int i=1;i<n;i++) { if(array[i-1]>array[i]){ // swap elements at index 'i' and '(i-1)' int temp=array[i]; array[i]=array[i-1]; array[i-1]=temp; swapped=true; } } --n;// reduce the range after each pass since last element will already be sorted }while(swapped); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值