之前简历被筛掉的经历就不说了,好多要了简历后说不合适,问了为什么也不说,很明显就是年龄问ti,之前我在招聘软件上写的是真实年龄,很多公司直接筛选30岁以下的,后来我改成了29岁,不这样写的话连简历被看见的机会都没有。改了年龄之后才有了几个反馈,但是也都没有马上约ms,因为一个岗位上千人qiang,都要排队,有的hr直接告诉我还有一千多人在排队,让我等。而且我的学历不占优势,不是硕士也不是211、985,好的工作都是优先给这些学历高的人。期间还被放了一次鸽子,ms时间都约好了,我准备了好几天,结果告诉我简历不合适。前几天才收到了之前几个外包约的msdianhua,等了将近半个月,流程太长了。
今天上午ms的是一家外包公司,金融项目,ms我的是外包公司的人,不是派遣公司的人。对方只问了一些项目上的问ti,技术问ti简单问了几个概念,可以听出来对方也不是很懂技术,所以只要能说出来就行,答案对不对对方可能也不知道。毕竟是外包项目,给的薪资也不是很高,问这些问ti我觉得也很合理。比较尴尬的是这次ms用了腾讯会议,这是我diyi次用腾讯会议ms,结果ms开始时说话没有声音,调了好半天对方才听到我说话,以后视频ms之前一定要先把话筒调好才行。
1.用过KVO吗?
这道ti我还说了代码,后来发现对方也听不懂,不管能不能听懂,说出来就行了。
回答:Key-Value Observing(KVO)是一种iOS中的机制,用于监视对象属性的更改,即当对象的属性更改时,会自动通知已注册为观察者的对象。
使用KVO需要完成以下步骤:
(1)注册观察者对象:
[obj addObserver:self forKeyPath:@"propertyToObserve" options:NSKeyValueObservingOptionNew context:nil];
(2)实现观察者的方法:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if ([keyPath isEqualToString:@"propertyToObserve"]) {
// 处理属性更改
}
}
(3)取消观察:
[obj removeObserver:self forKeyPath:@"propertyToObserve"];
在KVO中,被观察的对象需要遵循KVO机制,即使用willChangeValueForKey:和didChangeValueForKey:方法通知观察者属性的更改。这样,当属性更改时,观察者会自动接收到通知。例如:
[self willChangeValueForKey:@"propertyToObserve"];
self.propertyToObserve = newValue;
[self didChangeValueForKey:@"propertyToObserve"];
需要注意的是,KVO只能用于监视属性的更改,不能用于监视对象本身的更改(例如对象的内存地址的更改)。另外,KVO还有一些性能问ti,需要合理使用,以避免不必要的通知。
2.性能问ti
这个问ti上次也问了,就和项目中遇到的挑战是一道ti,这道ti基本是iOSms时必问的一道ti了。这道ti我押中了,所以说的很顺畅。
3.项目中用到过组件化吗?
这道ti我没具体了解过,问了对方是指哪方面,是不是指cocoapods,对方说不是,估计是因为她没听过这个词。
正确回答:
1.模块化:将应用拆分为独立模块,每个模块负责特定功能。
2.单一职责:每个组件专注于单一功能,易于管理和复用。
- 动态框架:利用动态框架实现组件间的灵活交互。
4.接口标准化:定义清晰的API,确保組件间松耦合。
5.依赖管理:使用CocoaPods或
Carthage管理外部依赖。
6.MVC/MVVM:采用设计模式分离guanzhu点,提高组件独立性。
7.SwiftUl: 利用SwiftUI构建声明式、可复用的界面组件。
8.运行时:Objective-C运行时特性,动态处理组件行为。
9.服务抽象:网络、数据库等通用服务的抽象层。 - CI/CD:自动化构建和部署流程,支持快速送代。
4.项目中用到Jenkins了吗,写脚本用的什么语言
这道ti也是上次ms问过的,估计这些HR都是因为看了我的简历写了这条才找的我,我回答了用的shell语言。
正确答案:
Jenkins打包的具体用处是自动化构建和部魯项目。它可以根据预先配置的脚本,自动从版本控制系统(如Git) 获取zuixin代码,编译、测试、打包,并将构建好的软件部署到zhiding的服务器或云平台上。这样可以提高开发效率,减少手动cao作,确保软件的一致性和稳定性。
在Jenkins中编写打包脚本通常用的是Groovy语言。Groovy是一种基于
Java的脚本语言,与Java语法相似,但更加简洁灵活,适合用于编写Jenkins的Pipeline脚本。
通常情況况下,如果使用Jenkins的Pipeline功能来实现持续集成和持续交付,那么可以使用Groovy脚本来编写Pipeline脚本,其中包括构建、测试、打包等步骤。另外,如果是直接在Jenkins的构建配置中执行一些简单的命令,可以使用Shell脚本来编写构建步骤。
5.了解过鸿蒙系统吗?
这道ti之前也被问过,感觉现在会不会鸿蒙系统已经成为必问的问ti了,这个我之前确实没有做过,就如实回答了,但是说了现在自己正在了解。应该把以下内容背下来,这样代表自己真正了解过。
正确回答:
1.分布式架构:支持多设备协同,实现资源共享。
2.微内核设计:提高系统anquan性和可扩展性。
3.全场景:面向多种终端设备,包括手机、平板、电视等。
- HarmonyOS: 华为自研cao作系统。
5.兼容性:支持安卓应用,平滑过渡。
6.性能优化:响应速度快,时延低。
7.开放sheng态:鼓励开发者参与,共建应用生态。
8.跨终端协同:设备间无缝协作,提升用户体验。
9.anquan性:强化数据保护和隐私anquan。
10.自主研发:减少外部依赖,增强技术自主性。
这家目前是一面,后面不知道会不会有二面,估计因为我开视频没声音的问ti也不会有二面了。