腾讯 运营开发 实习 面经
刚刚过完HR面,发个面经赚赚人品,同时复盘一下自己答得不好的地方,许愿oc!!
部门:ieg
timeline:
3.7 一面
● 自我介绍
● 介绍UWB项目+用到的技术+困难点+代码量
● 游戏开发项目(问是不是喜欢玩魂类游戏)
● Wi-Fi定位项目、困难点
● 注解开发(简化配置、生成代码、运行时处理、标记等)
● Restful风格是什么
1. 基于资源(Resource-Based):RESTful架构将网络中的各种资源抽象为资源(Resource),每个资源都有一个唯一的标识符(URI),并且可以通过HTTP方法(GET、POST、PUT、DELETE等)对资源进行操作。资源可以是实际的数据对象、文件、服务、或者是对这些事物的抽象。
2. 统一接口(Uniform Interface):RESTful架构使用统一的接口来访问和操作资源,即HTTP协议定义的一组标准操作(GET、POST、PUT、DELETE等)。这样设计使得不同的客户端和服务器可以遵循同样的接口规范进行通信,提高了系统的可移植性和互操作性。
3. 状态转移(Stateless):RESTful架构是无状态的,即每个请求都包含了足够的信息来描述客户端的请求,服务器不需要保存任何客户端的状态信息。这样设计使得服务器更加简单、可伸缩性更好,并且客户端和服务器之间的通信变得更加可靠。
4. 资源关联(Resource Representation):RESTful架构中的资源通常以一种标准的格式进行表示,比如JSON或XML。客户端通过获取资源的表现形式来进行操作和解析。
5. 无连接(Client-Server):RESTful架构将系统划分为客户端和服务器两个独立的组件,它们之间通过HTTP协议进行通信,每个组件都可以独立演化和扩展,提高了系统的可维护性和可扩展性。
综上所述,RESTful风格是一种简单、轻量级的设计风格,通过定义资源、统一接口、状态转移等原则来构建可伸缩、可维护的分布式系统。
● 反射的应用 IoC 注解开发(答得不好)
IoC可以将对象之间的相互依赖关系交给IoC容器管理,并由IoC容器完成依赖注入。这样可以很大程度简化应用开发,把应用从复杂的依赖关系中解放出来。
比如项目中一个Service类可能依赖了很多其他的类,如果我们使用Service的时候都需要实例化出来,那么每次都要搞清这个 Service 所有底层类的构造函数。而IoC可以为我们免去这一操作。
Spring IoC 容器负责管理 bean 的生命周期,包括 bean 的创建、初始化、使用和销毁等阶段。通过配置 bean 的初始化方法和销毁方法,可以在 bean 的生命周期中执行特定的操作。
● Linux用过吗,主要用来做什么?有部署过云服务器吗?如何查找一个路径下所有.py后缀的文件(答错了)
ls /your/path/*.py
find /path/to/search -type f -name "*.py"
● /path/to/search 是你想要开始搜索的目录路径。
● -type f 表示你想要查找的是文件(非目录)。
● -name "*.py" 表示你想要查找所有后缀为.py的文件。
编程:
1. 读取字符串第三的倍数的字符(包括英文和中文)
2. 括号匹配(代码风格不好)
业务场景:
定时在早上7点向用户的手机发短信,内容为腾讯新闻的标题。要用到什么技术?
Jsoup、CSS选择器、任务调度框架(Quartz、触发器、调度器)
1. 如何获取标题
String url = "https://example.com"; // 要获取新闻标题的网页 URL try { // 使用 Jsoup 解析网页内容 Document doc = Jsoup.connect(url).get(); // 使用 CSS 选择器定位新闻标题的元素 Elements newsHeadlines = doc.select("h1.news-title"); // 遍历新闻标题元素,并输出标题文本 for (Element headline : newsHeadlines) { System.out.println("新闻标题: " + headline.text()); } } catch (IOException e) { e.printStackTrace(); }
2. 如何定时发给用户
可以使用 Java 中的定时任务调度框架,例如 Quartz
// 创建一个调度器 Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler(); scheduler.start(); // 创建一个定时任务 JobDetail jobDetail = JobBuilder.newJob(PushJob.class) .withIdentity("pushJob", "group1") .build(); // 创建一个触发器,每天早上 7 点执行 Trigger trigger = TriggerBuilder.newTrigger() .withIdentity("trigger1", "group1") .startAt(DateBuilder.todayAt(7, 0, 0)) // 每天早上 7 点开始执行 .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInHours(24).repeatForever()) // 每隔一天执行一次 .build(); // 将定时任务和触发器绑定到调度器中 scheduler.scheduleJob(jobDetail, trigger);
Quartz触发器的工作原理可以分为两个主要部分:调度任务和任务执行。
1. 调度任务:Quarz任务调度器将任务(Job)和触发器(Trigger)绑定在一起。触发器定义了任务调度的时间规则。Quartz框架有两类常见的触发器,包括SimpleTrigger、CronTrigger、DatelntervalTrigger和NthIncludedDayTrigger。这些触发器都有一个重要的属性,称为“错过触发(misfire)。如果调度器关闭,或者Quartz线程池中没有可用的线程来执行任务,此时持久性的触发器就会错过其触发时间。不同类型的触发器,其misfire机制默认都使用“智能策略”(smart policy),即根据触发器的类型和配置动态调整行为。
2. 任务执行:Quartz工作线程(scheduler)通过常规调度线程轮询所有的触发器。当某个触发器到达下次触发的时间时(通过wait和notifyAll,唤醒所有因对象锁wait阻塞的线程实现),调度线程会从任务执行线程池获取一个空闲线程,执行与该触发器关联的任务。
总的来说,Quartz框架通过将任务和触发器绑定在一起,实现任务的定时或周期性执行,同时使用了智能策略来处理触发器的错过触发问题,使得任务的执行更为灵活和可配置。
其他:
什么时候入职?
希望从事游戏开发相关的工作吗
3.13 二面
比较简单,半个小时结束了,没有怎么拷打
项目:
介绍项目
什么选ZMQ、MySQL,如何做的技术选型?
MySQL如何容灾?除了分布式集群还有什么思路?
八股:
网络7层架构
每层有什么协议?
3.21 HR面
为什么想从事运营开发?
来深圳接受吗?
为什么选择腾讯?
有了解到最近的AIGC和游戏的热点吗?
职业规划?
许愿OC!
#暑期实习##腾讯##后端开发##软件开发2024笔面经#