华为OD——java开发工程师面试(附回忆版题目)

1月份同学给我推荐了这个岗位,因为没有工作经历,所以还是比较有压力的,只能尽力准备了。

一、机试

在正式机试之前,我在牛客网在线编程练了几十道题,原本的计划是题目练完的,但是看错了机试时间,最后匆忙机试。

1、机试题目

【正则表达式匹配】请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配
【解析】这个知识点在牛客网专题靠后位置,我没练习到,而且,没有复习java对正则表达式的支持,所以做的时候用了最麻烦的方法。
【代码】

public static boolean match(char[] str, char[] pattern) {
        String regex = "", string = "";
        for (int i = 0; i < pattern.length; i++) {
            regex += pattern[i];
        }

        for (int i = 0; i < str.length; i++) {
            string += str[i];
        }

        Pattern pattern1 =Pattern.compile(regex);
        Matcher matcher=pattern1.matcher(string);

        return matcher.matches();
    }

二、技术一面

因为最近新型肺炎疫情严重,我有幸全程视频面试,我感觉挺方便,就像两个人视频聊天,没有现实中两个陌生人两天的距离感。
这次面试,我个人觉得我还是太水了!!
我面试的是java,在牛客网面经中提到的知识点主要有:

  • 【java】java基础、java高级(线程与线程池、反射、异常、内存管理等)
  • 【javaWeb框架】Spring boot、SpringMVC、Mybatis、Hibernate、Struts
  • 设计模式
  • 算法与数据结构
  • 计算机网络
  • 操作系统
  • XML
  • JDBC
    这些东西框架和XML大学我没学习过,java高级自己了解过一点,其他东西除了java基础和算法,其他东西都没复习。

(一)面试题目

1、新建线程的方法,对线程的了解

(答得不全,因为自己没写过这个代码,印象不深刻)
三种

  • 1)继承Thread类
  • 2)实现Runnable接口
  • 3)实现Callable接口
    其中第三种方法需要用到线程池
2、什么是java不可变类型?

(这个问题真的是难倒我了,因为面试官提到String是可变类型???)
【答案:java中的引用类型,值可变引用不变,比如String,其实你改变值就是新new了一个String】

3、并发怎么理解?
4、SpringMVC的面向切面怎么理解

(框架没有复习)

5、Mybatis了解过吗?

(没有。。然而还是问框架)

6、排序算法了解吗?说说
7、选择排序的效率怎么样?

(???记得堆排序,但是不知道怎么实现了,压根不觉得直接选择是一种排序)

(二)手撕代码

【题目】

括号匹配“{}()[]”
因为视频面试,手撕不太方便,所以最后是我用我的记事本来写

【思路】

存左括号,遇到右括号匹配,直到字符串匹配结束
右括号匹配失败,false
如果栈不为空,false
栈为空,true

【问题】

我犯了一个很低级的问题,我忘记了怎么取栈顶元素(不删除)

三、技术二面

和一面连续的

(一)手撕代码

面试官说手撕不方便,所以改成陈述一面的手撕代码思路。那我肯定没问题。

(二)面试题目

1、java中堆和栈的区别,不是数据结构里的那种

(不会,没了解过底层机制)

2、内存回收机制

(没了解)

3、进程和线程,区别

(会)

4、JVM为什么实现了跨平台运行?

(java先编译然后解释执行,编译得到class字节文件,不同平台可以运行)面试官大概给我讲了这个过程

5、抽象类与接口对比

(会)

6、java获取一个类的方法

(会,但是不全,用到反射)

7、用反射不知道类路径,能获得类吗?如果给一个错误路径,能获取到类吗?会出现什么异常?

(会,不能、不能、运行时异常)面试官循循善诱。。。

8、设计模式了解过吗?

(忘了,学过,我讲我不太清楚它的作用)面试官讲了开发中设计模式的使用,确实很厉害。简单讲,设计模式就是开发中经常用到的模板,开发时,遇到不匹配的代码,可以套用设计模式进行修改,实现代码复用,增加代码可维护性。

9、其他

面试两个小时,肯定不会只有这几个问题。其他时间面试官和我聊了我的大学经历,因为我参加了两次数学建模,而且获得了奖项,所以和面试官聊了这些。
是16年全国大学生数学建模竞赛的题目,关于小区开放对交通的影响。数学建模的题目我没复习,只记得大概思路,就和面试官聊了聊,里面涉及到构建加权图,搜索问题等

四、综测,个人调查

就是做了个电子测试,然后填写了一份个人登记表

五、HR面试

主要是聊天,个人经历,没涉及到技术

六、综合测试

还是聊天,详细经历都问到了。里面聊了数学建模,主要说了17年美国大学生数学建模竞赛题目,参赛细节等。

七、最后

现在是2020.02.21 19:17.收到HR邮件,说面试通过,等HR联系Offer的细节。至此,这次面试就结束了。感觉好累啊,从年前到现在,持续了快一个月,亚历山大。

相关文章

暂无评论

暂无评论...