校招实习面试实战,身临其境华为软件开发工程师面试复盘总结
Posted 陆海潘江小C
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了校招实习面试实战,身临其境华为软件开发工程师面试复盘总结相关的知识,希望对你有一定的参考价值。
【校招实习面试实战,身临其境】华为软件开发工程师面试复盘总结
- 自我介绍
- 1、是否用过Java、Python做系统的项目
- 2、华为云系统开发js写业务逻辑用的是ES6还是ES5标准
- 3、平时熟练使用哪种语言
- 4、HashMap、HashSet、HashTable、StringBuffer、StringBuilder哪些是线程安全,哪些是线程不安全
- 5、HashSet数据结构,跟HashMap有什么区别
- 6、Java集合框架的主类是什么,HashSet有没有继承Collection
- 7、软件工程学过哪些课程
- 8、进程和线程的区别
- 9、知道哪些排序算法,快排的时间复杂度是多少,是稳定的排序算法吗
- 10、编程题/算法
备战春招,校招实习面经分享,拿Java开发工程师offer~~
本系列文章包括Java、算法、计算机网络、数据库、操作系统等等,本篇介绍面试华为【软件开发工程师】岗位的题目,复盘解析及心路历程。
传送门:
华为的面试是HR提前跟你约好时间的,而且会在临近面试时间发出信息通知,也可以登录官网看到自己的面试链接。
一般面试官会面试很多人,应聘者在队列中,可以看到自己排到第几位,轮到自己时会再次发信息,点击签到即可,然后就进入面试了。
接下来就介绍面试华为【软件开发工程师】岗位的题目,复盘解析及心路历程,还有一些个人的想法和面试建议。
自我介绍
基本上按简历上写的讲。
一份充实的简历,在自我介绍的时候可以按照简历上的顺序讲,可能有的人觉得写在简历上,面试官可以自己看,自己没必要讲。
其实写的只是干巴巴的描述,而说出来更能体现面试者的态度和表达逻辑
。这跟“说”和“做”一样的道理。
1、是否用过Java、Python做系统的项目
自我介绍结束之后,面试官通常会抛出一个问题,这是深究自己做过的项目的开始。
我没有做过很大的项目,写的系统也是自学。自己简单说了一下 🤣
虽然项目不大,但是自学的情况下通常在开发过程中会遇到问题,解决问题,这里可以讲亮点说出来,体现自己的能力和认真。
2、华为云系统开发js写业务逻辑用的是ES6还是ES5标准
之前参加过华为云系统开发获得奖,面试官好像感兴趣,问了这个问题,但是前端的八股文我不太了解 😅
这个问题的来源是简历上写的一个比赛获奖,可以发现,面试官有时会抓住简历上的点来考察,因此写在简历上的东西自己都必须很熟悉。
3、平时熟练使用哪种语言
我说Java,以前学C++有写过题,python也会基本操作 😂
这是一个简单的问题,开放性大,相当于面试官把主动权交给应聘者,让他来展现接下来熟悉的领域。作为应聘者,要抓住机会,引导面试官走向自己的知识体系。
然后得知我熟悉java,后面主要对java内容提问,基本达到目的 😁
4、HashMap、HashSet、HashTable、StringBuffer、StringBuilder哪些是线程安全,哪些是线程不安全
线程安全:HashTable、StringBuffer
线程不安全:HashMap、HashSet、StringBuilder
这些都是实际中常用的数据结构,应当非常熟悉。
表面上是一个选择题,实际回答可以讲讲内部数据结构,为何线程安全,从底层讲解,凸显自己的基础功底。
5、HashSet数据结构,跟HashMap有什么区别
HashMap底层由数组和链表
两种数据结构实现,JDK8时候,在优化方面增加了链表转化为红黑树
的方法,目的提高查找效率。
HashSet底层其实就是一个HashMap,存储key,value内容相同。
抛出这个问题,目的就是问题的深度增加,考察基础的扎实程度,对于一个问题,有没有去深入了解内部信息,或者只停留在表面,此时可以让应聘者无所遁形。
6、Java集合框架的主类是什么,HashSet有没有继承Collection
众所周知,Java集合的主类就是Collection,且List、Set这些都是继承Collection的。
同样的道理,这个问题表面只是简单的问答题,实际我们可以展现出对Java集合框架这个基础知识的扩展,讲讲更丰富的内容
。
7、软件工程学过哪些课程
同样是开放性问题,与第3题一样,我们学过很多课程,有些掌握不太好,比如操作系统!这时就引导面试官走向自己熟悉的课程,避坑!
8、进程和线程的区别
进程:资源分配和调度的单位,是一个程序的主体。
线程:进程内一个相对独立的执行流,处理机分配的实体。进程内部多个并发活动,减少系统对于并发所带来的时空开销,共享资源,建立线程模型。
9、知道哪些排序算法,快排的时间复杂度是多少,是稳定的排序算法吗
排序算法,是必须掌握的基础算法!
算法:选择排序、冒泡排序、插入排序、快速排序、希尔排序、堆排序。
快速排序时间复杂度:最好O(nlogn),最坏O(n^2)
快速排序不是稳定排序算法。
排序算法网上的各种讲解十分丰富,这里不再赘述。
10、编程题/算法
面试官通常会考察编码能力或者算法,于是出了一道题。
题目大概:请输出两个字符串a和b相减的结果(a>b,a和b的字符串长度介于1~50之间)。
例:输入a:“99999”,b=“99998”
输出:“1”
看了题目,做过的一目了然,没做过的一脸懵,因此很看运气。这就是经典的大数相减问题
。
方法源码:
import java.io.Serializable;
public class bigNumbersSub implements Serializable
private static final long serialVersionUID = 4166471447559104817L;
/**
* @author Charzous
*
* 两个正大数相减
*/
public static String twoBigNumbersSub(String num1, String num2)
int len1 = num1.length(), len2 = num2.length();
int i, j;
int maxLen = Math.max(len1, len2);
int[] n1 = new int[maxLen];
int[] n2 = new int[maxLen];
//反转存储
for (i = 0; i < len1; i++)
n1[i] = num1.charAt(len1 - i - 1) - '0';
for (i = 0; i < len2; i++)
n2[i] = num2.charAt(len2 - i - 1) - '0';
//确定最终结果符号位
char sign = '+';
if (len1 < len2)
sign = '-';
else if (len1 == len2)
int idx = len1 - 1;
// 从后往前比较每一位,确定符号
while (idx > 0 && num1.charAt(idx) == num2.charAt(idx))
idx--;
if (num1.charAt(idx) < num2.charAt(idx))
sign = '-';
int[] result = new int[maxLen];
//逐位计算得到结果
for (i = 0; i < maxLen; i++)
if (sign == '+')
result[i] = n1[i] - n2[i];
else
result[i] = n2[i] - n1[i];
for (i = 0; i < maxLen - 1; i++)
//如果该位数小于0,需要向前借位
if (result[i] < 0)
result[i] += 10;
result[i + 1] -= 1;
StringBuilder ans = new StringBuilder();
//再次反转,得到结果
for (i = maxLen - 1; i >= 0; i--)
ans.append(result[i]);
j = 0;
//去除前导0
while (j < ans.length() && ans.charAt(j) == '0')
j++;
ans.replace(0, j, "");
//相等
if (ans.toString().equals(""))
return "0";
else if (sign == '-')
ans.insert(0, '-');
return ans.toString();
/**
* @author Charzous
*
* 两个正大数相减,且 a > b
*/
public static void main(String[] args)
String num1 = "10903903163681";
String num2 = "10000090102090";
System.out.println(twoBigNumbersSub(num1, num2));
System.out.println();
System.out.println(Long.parseLong(num1) - Long.parseLong(num2));
大数相减
在实际编码主要重于技巧,在设计上需要花心思,可以从上面代码中清晰看到每个步骤的逻辑,容易理解。
回顾这轮面试得复盘,发现掌握基础的重要性,以及对问题的剖析程度,校招实习面试更看重基础能力
!
欢迎“一键三连”
哦,点赞加关注,收藏不迷路!
每天进步亿点点,距离Java工程师更近一步啦,我们下篇见!(⊙ᗜ⊙)
公众号同步更新哦,习惯阅读公众号的伙伴们可以关注下面我的公众号呀!
本篇内容首发我的CSDN博客:https://csdn-czh.blog.csdn.net/article/details/123293682
以上是关于校招实习面试实战,身临其境华为软件开发工程师面试复盘总结的主要内容,如果未能解决你的问题,请参考以下文章
校招实习笔面试实战,LeetCode分割字符串常考题目,图文解析
校招实习笔面试实战,LeetCode分割字符串常考题目,图文解析
2016BAT+华为+滴滴+搜狗Android开发岗面试问题整理