记我的头条面经

三面卒。。。。。
一面
上来先做笔试,3个题

  • ABCDE五个学校参加竞赛,其中已知 E不是第二或者是第三;下面是几个学校的预测。A: E是第一 B: 我是第二 ; C : A最差 D: C不是最好 E:D是第一 其中只有真实排名为1 2 的学校说的是真话,其余人说的都是假话。
  • 给一个无序不重复的数组,找出n个数字,和为m
  • 画一个自适应正方形,其中宽度是屏幕宽度的50%,要求水平垂直居中。

做完题后开始正式面试。让我讲解一下第三个题是怎么实现的,能给出别的方案不。然后问了一点项目的,比如移动端是怎么布局的,答rem布局,又问rem布局的基础流程,问有了解的前端框架吗,答 jQuery/Backbone,然后让我讲一下backbone的实现原理。。期间各种小问题,如block inline区别,介绍一下inline-block之类的。。别的问的啥都忘记了。。。。
一面面了40分钟左右,面试官不苟言笑,期间一直让我不要看他。。。所以觉得答得不是很好,本以为一面据挂的,面完出来有点气馁。但是二面的时候据说他给我的反馈还不错,,所以人啊要相信自己。
二面:
因为我写了用过flex布局,然后上来让我用flex写一个布局。header,left,right这种的,left和right高度自适应,right宽度自适应。
然后出了两个实际应用场景。1. 一个输入框,每输入一个字符就要发送请求,但是现在让我改进一下,输入比较快的时候不发送给请求,只有我停下来0.2s之后才发送请求。
2.给一个字符串,比如sss@abc sss#ssssss#sss,要求返回这样一个数据结构
[{
‘string’: ‘xxx’;
‘type’: ‘topic’/’at’/’string’; //topic指#之间的内容,at指@的内容,string表示剩余内容。
}]
3.问了我2个算法,怎么判断链表中有环,另一个忘记了
剩下的就是怎么学习的前端啊,看的什么书啊之类的。
二面面了一个小时左右,面试官很nice,我不会的他会引导我,然后面试结束的时候给我说我不会卡你,会让你过,感觉很欣慰。
二面完事之后就12点多了,中午管饭。吃饱饭战战兢兢的等三面。
三面:
上来让我评价一下上家公司,为啥想要离职。看了什么书之类的。
然后侃了一会说问你一点简单的。
bind/call/apply都是怎么用的,好了,说完之后,问现在清楚bind是怎么用的了是吧,然后在函数的原型中写一个函数使他实现的功能与bind相同。
因为之前用的backbone框架,所以问backbone作为基础的mvc框架,怎么拓展成mvvm框架中这种双向绑定的形式。
还问了一些别的有的没的的。。
至此,三面卒。。。。

### 黑马头条相关的面试经验与知识点 在技术面试中,特别是针对黑马头条这样的平台,通常会涉及多个方的技术知识和实践经验。以下是几个关键的技术点和面试可能涉及的内容: #### 1. 在线调试功能的实现 在线调试功能是一个强大的工具,可以帮助开发者快速验证接口的正确性。通过自动解析当前接口参数,可以返回接口响应内容、headers、Curl请求命令实例、响应时间以及响应状态码等信息[^1]。这些功能的实现需要对HTTP协议有深入的理解,并且熟悉常见的API测试工具如Postman或JMeter的工作原理。 #### 2. Redis数据结构的应用 Redis中的ZSet(有序集合)和List(列表)是高频使用的数据结构。例如,在任务调度系统中,可以通过ZSet存储带有优先级的任务,并定时扫描以将符合条件的任务移动到List中进行处理[^2]。这种设计模式能够有效解决任务延迟执行的问题,同时避免因并发操作导致的数据不一致。 #### 3. 乐观锁机制及其局限性 乐观锁是一种常用的并发控制方法,特别是在高并发场景下用于确保数据的一致性。其核心思想是:只有当扣减库存时的库存值与之前查询到的库存值一致时,才允许执行扣减操作[^3]。然而,这种方式在极端情况下可能会导致较高的失败率,因为多个线程可能同时获取相同的初始值,但最终只有一个线程能成功完成操作,其余线程则会因条件不满足而失败。 #### 4. 高并发下的库存管理 库存管理系统是电商领域的重要组成部分,涉及到分布式事务、锁机制以及一致性问题。除了上述提到的乐观锁之外,还可以结合数据库的行级锁或者分布式锁来进一步提升系统的可靠性和性能。此外,还需要考虑如何优化查询效率以及减少锁的竞争。 ```python # 示例代码:使用Python实现简单的乐观锁逻辑 import redis def deduct_stock(redis_conn, product_id, stock_key='stock'): while True: # 获取当前库存 current_stock = int(redis_conn.get(f"{stock_key}:{product_id}")) if current_stock <= 0: return False # 准备更新命令 new_stock = current_stock - 1 updated = redis_conn.eval(""" local current = tonumber(redis.call("get", KEYS[1])) if current == ARGV[1] then redis.call("set", KEYS[1], ARGV[2]) return 1 else return 0 end """, 1, f"{stock_key}:{product_id}", current_stock, new_stock) if updated: return True ``` #### 5. 分布式系统的常见问题及解决方案 在构建分布式系统时,需要解决诸如数据一致性、容错性、负载均衡等问题。例如,可以通过引入消息队列(如Kafka、RabbitMQ)来解耦生产者和消费者之间的依赖关系;利用Zookeeper或Etcd实现服务发现和配置管理;以及采用分片策略来提高数据库的扩展能力。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值