• 华为一面


    我投的是中央软件院编译器部门,面试官是非智能驾驶车的车载操作操作系统部门(每个人限制一个小时)

    • 不直接问你具体知识点,而是对整个知识体系说一下具体了解哪些,看你掌握了哪些并提出一些问题

    1.首先自我介绍

    2.详细的询问工作内容

    3.详细的询问简历中所写的项目

    4.询问对C++是否了解

    5.自定义的C++内存分配器如何替换原来的内存分配器

    6.说一下C++的内存分配器(两级结构和内存池以及STL),内存结构(堆,栈,自由存储区,全局/静态存储区,常量区),虚函数表

    7.说一下对操作系统的了解(进程,线程概念和状态转换以及两者优缺点,死锁的四个必要条件,进程调度算法,页面置换算法,页和段,内存抖动,用户态和内核态)

    8.说一下对计算机网络的了解(网络的七层结构以及每一层的作用,每一层有哪些协议,还有主要讲讲路由选择协议,三次握手和四次挥手等)

    9.说一下对数据结构和算法的了解以及应用场景(排序的众多算法,栈和队列,链表,二叉树,堆,图论的最小生成树,拓扑排序,prime和kruskal,并查集,线段树,字典树等)面试官提问:斐波纳挈堆,红黑树和平衡二叉树详细说一下

    10.询问是否熟练掌握Linux,Shell,还会Java,python吗【害怕极了会问一些知识点,当时说的是只是用过不熟悉】

    11.看着你的简历问你的技术,例如我写了了解docker,Hadoop,zookeeper等,他问docker与虚拟机区别以及docker使用了那两个与操作系统有关的技术,Hadoop讲一下,zookeeper讲一下

    12.询问是否有其他开源项目或阅读过开源项目,是否会用git和svn

    13.开始编程:三道题

    (1)第一题是主要是原码和补码之间的关系

    import java.util.Scanner;
    
    public class Test3 {
    
        public static char[] c = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int i = sc.nextInt();
    
            System.out.println(helper(i));
    
        }
    
        public static String helper(int n){
    
            StringBuffer sb = new StringBuffer();
    
            boolean flag = false;
            if (n == 0){
                return "0x0";
            }else if(n < 0){
    
                n = Integer.MAX_VALUE + n + 1;
                flag = true;
            }
    
            while(n > 0){
                char t = c[n % 16];
                n /= 16;
                sb.insert(0,t);
            }
            if (flag){
                sb.replace(0,1,"F");
            }
            return sb.insert(0,"0x").toString();
        }
    
    }

    (2)第二题利用面积(圆点在圆心半径为1的圆以及他的外接正方形,随机N次到其中的概率,则PI=4P)

    import java.util.Random;
    
    public class Test2 {
    
    
        public static void main(String[] args) {
    
            int n = 10000000;
            int sum = 0;
            double PI;
            Random random = new Random();
            for (int i = 0; i < n; i++) {
                double x = random.nextDouble();
                double y = random.nextDouble();
                sum += (helper(x, y) ? 1 : 0);
            }
    
            PI = 4 * ((double) sum / n);
    
            System.out.println(PI);
        }
    
        public static boolean helper(double x, double y) {
    
            return Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)) >= 1 ? false : true;
        }
    
    }

    (3)第三题一开始想的是用换底公式但是怕不是太简单了,会不会使用泰勒展开式来求则不得而知了

    public class Test3 {
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
    
            System.out.println(helper(2, n));
    
        }
    
        public static double helper(int base, int n) {
            return Math.log(n) / Math.log(base);
        }
    
    }
  • 相关阅读:
    解决Struts中文乱码问题总结
    多校第十场1009 CRB and String题解
    DirectX--Filter属性页的调用
    理解ThreadLocal类
    unity3d
    使用Java8提供的Duration类制作字幕时间轴调整工具
    算法练习--卡片游戏
    在eclipse中创建web项目
    testNg官方文档
    TestNG基本注解(注释)
  • 原文地址:https://www.cnblogs.com/zhihaospace/p/12859418.html
Copyright © 2020-2023  润新知