2019面试问题小记

一、0614vivo大数据工程师(或软件后台开发)

WO:

1、liunx命令
常用命令,包括查看网络端口占用、CPU等资源占用(计算机负载,可能还包括内存、磁盘等)、查看线程

2、计算机网络(tcp、udp)

3、MongoDB与MySQL区别,应用场景,索引原理。

4、HTTPS和HTTP的区别(下述内容为网上查找,仅供参考):

  • https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
  • http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

5、Java

  • 单例模式(同学被问的问题)(参考:https://www.runoob.com/design-pattern/singleton-pattern.html)
  • 关于Java的基础知识需要掌握牢固(网上很多Java面试总结)。

6、大数据还问了一句“hadoop”会不会......

 

H同学:

1.hashmap的扩容机制
2.redis的数据类型 redis的过期时间 实现原理  如果让你设计你怎么设计
3.设计学生选课系统数据库表 多对多表
4.topk问题 10000个数里选10最大的  堆的实现原理
5.如何给不懂计算机的人 讲解一下线程 进程的区别 设计一个场景
6.银行排队和叫号对应计算机科学的什么? 阻塞和非阻塞 各自优缺点
7.两个有序数组的合并成一个数组 时间复杂度
8.mybatis $和#的区别  如何防止sql注入 什么时候使用$和#
9.软件开发规范???
面试官都是根据简历上问会引出相关知识。

 

二、0617-TP-Link后台开发

PRJ同学:

一开始还自我介绍+项目介绍了

1.ping的原理,重点是dns的逐层查找
2.如果视频面试时画面很卡,作为网管的你如何调试
3.Linux的内核态和用户态是什么?如何切进程
4.对进程和线程的理解
5.对tcp的理解
6.锁和信号量用在哪里的,怎么用的    7.进程间通信方式

LZ同学:

1、讲项目
2、linux内存管理和一些具体机制
3、python静态代码检查工具
4、python垃圾清除
5、java垃圾清除
6、问了三道笔试题和变种、优化
7、问了几种排序的实现,排序的稳定性
8、spring

ZL同学:

1 项目相关
2 对ssm的理解
3 对springboot的理解,与spring的区别
4 别写什么商城秒杀,一看就被怼

ZCC同学:


1.自我介绍。
2.对着项目问。居然对tensor恢复算法感兴趣。在问项目的过程中,问了进程和线程的区别,IO多路复用
3.堆和栈的区别?栈是如何知道应用程序的大小?怎么分配内存?
4.给你一个链表,排序,详细过程。
5.对TCP的理解,TCP如何保证传输正确性

多名同学:

1.海量文件去重(引申:md5对于大文件耗时太多,如何降低时间复杂度)

解决方法参考:https://github.com/julycoding/The-Art-Of-Programming-By-July/blob/master/ebook/zh/06.00.md

 

三、中电十所

我自己及同学:

1、讲教研室项目,自己的具体工作(问我事件检测的内容,我:“这块不是我做的”);

2、以后打算做什么;

3、Java面向对象的理解,及特点(封装、继承、多态)。

 

四、字节跳动

PRJ 同学:

基础:
1.python和java的垃圾回收机制和分代机制
2.python的多线程与多进程,java的进程池
3.进程、线程、协程
4.内核态与用户态的切换
项目:
1.Mongo的分布式与角色
2.Mongo的索引机制
3.流量控制和RPC
算法:
1.O(n)时间复杂度的算法解决排序问题(个人备注:桶排序、基数排序、计数排序)
2.快排

YYH同学:

1、a^n, a是浮点数,Log(N)时间解决;

2、孤岛问题(可以参考一下这个:https://blog.csdn.net/qq_41805514/article/details/82951804);

3、项目。

 

五、OPPO

YHQ同学:

MySQL主从复制原理,原负载均衡(ngix)原理,redis的list有哪些,redis的key-value是如何删除的,hashmap原理,hashmap线程不安全会引发什么问题,juc包有哪些并发安全的类,乐观锁和悲观锁具体是什么样的,jdk里面有哪些乐观锁悲观锁,浏览器输入URL之后的过程,线程池参数,双亲委派模型,运行时内存区域,常见垃圾回收算法。

ZL同学:


一面:上来就说面试只有十五分钟
自我介绍,简单介绍了教研室项目
集合顶级接口,list和set的区别,volatile关键字作用顺带说了一下jmm,synchronize作用,介绍一下jvm,
线程池和它的参数,四种拒绝策略以及使用流程,谈谈AQS框架以及CountDownLatch,CyclicBarrier,信号量,可重入锁, 
redis数据结构过期时间设置命令,以及集群如何分配槽,
mysql 的Innodb与myisam的区别,介绍B+索引
rabbitMQ交换机四种模式,如何保证消息不丢失从发送方和接收方,
问完时间差不多就结束了

二面:
自我介绍,简单了介绍教研室项目,感兴趣要详细介绍一下
第二项目问我有什么难点,我直接说网上找的,只有crud就没问
加问了一下秒杀系统的优化,(接口防刷,redis预减,消息队列异步执行实现流量削峰,也没问具体怎么实现的)
问了java锁的几种实现(synchronize和AQS框架以及CountDownLatch,CyclicBarrier,信号量,可重入锁,)
正在学什么看什么书
对redis的了解,以及AOF如何实现跟RDB的区别,AOF重写如何实现

六、成都中兴提前批

LJC同学:

 

1.首先自我介绍,顺带说一下项目
2.分词是不是你写的,原理
3.项目是不是分布式的,部署在几个节点,MongoDB部署在几个节点
4.爬虫里面,怎么定位区分网页元素。我说用HTML标签和id属性,问有哪些标签
5.java和Python区别,
6.说说链表(我说了和数组的区别,以及插入删除查找的时间复杂度,内存分配这些)
7.java的访问修饰符和作用范围
8.hashmap和hashtable
9.说说mysql与mongodb区别
10.为什么你说的mongodb这么好,现在仍然大量使用关系型数据库
11.sql的增删改查,事务及事务的特点
12.linux的内存分为哪些,怎么分配
13.说说你知道的Linux命令,netstat什么作用,你们系统的网络资源占用情况

我自己:

1、自我介绍,顺带说了一下项目;

2、接着问了项目中最近做的东西(这个问的很细,画图说明每一步具体实现);

3、Java:(1)HashSet与HashMap,(2)多线程开启的几种方式;

4、维护数据库的具体实现过程;

5、Python关键字。

听到另外一个人说被问到如何快速知道10000台计算机中哪些可以ping通。

七、网易

PRJ:

 

1.项目
2.手写SQL的联合索引语句;还有mysql的读写锁和四个事务隔离等级。
3.synchronized基于jvm的原理解释
4.负载均衡
5.高可用性如何实现(哨兵模式与自动故障转移)
6.redis的并发冲突问题
7.redis的场景设计题:统计每篇博客的访问量
8.手撕代码并计算时空复杂度:int[]类型的数组反转

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Protobuf是一种高效的序列化协议,可以用于数据交换和数据存储。它的主要优势是大小小,速度快,可扩展性强。下面是使用Protobuf的一些小记: 1. 定义消息格式 首先,需要定义消息格式,以便Protobuf可以将数据序列化和反序列化。消息格式定义在.proto文件中,使用protobuf语言编写。例如,下面是一个简单的消息格式定义: ``` syntax = "proto3"; message Person { string name = 1; int32 age = 2; } ``` 这个消息格式定义了一个名为Person的消息,包含两个字段:name和age。 2. 生成代码 一旦消息格式定义好,就可以使用Protobuf编译器生成代码。编译器将根据消息格式定义生成相应的代码,包括消息类、序列化和反序列化方法等。可以使用以下命令生成代码: ``` protoc --java_out=. message.proto ``` 这将生成一个名为message.pb.java的Java类,该类包含Person消息的定义以及相关方法。 3. 序列化和反序列化 一旦生成了代码,就可以使用Protobuf序列化和反序列化数据。例如,下面是一个示例代码,将一个Person对象序列化为字节数组,并将其反序列化为另一个Person对象: ``` Person person = Person.newBuilder() .setName("Alice") .setAge(25) .build(); byte[] bytes = person.toByteArray(); Person deserializedPerson = Person.parseFrom(bytes); ``` 这个示例代码创建了一个Person对象,将其序列化为字节数组,然后将其反序列化为另一个Person对象。在这个过程中,Protobuf使用生成的代码执行序列化和反序列化操作。 以上是使用Protobuf的一些基本步骤和注意事项,希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值